首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maxscript函数正向声明

Maxscript函数正向声明
EN

Stack Overflow用户
提问于 2013-04-02 16:56:09
回答 3查看 1.6K关注 0票数 2

我有一个古老的问题,Maxscripts在第一次运行时不能工作(从冷启动),因为函数在使用之前需要声明。

以下脚本将在第一次运行时失败:

代码语言:javascript
复制
fOne()
function fOne = 
(
    fTwo()
)

function fTwo = 
(
    messageBox ("Hello world!")
)

我们得到这样的错误:“类型错误:调用需要函数或类,get :未定义”。第二次,脚本会运行得很好。

但是,向脚本添加转发声明后,我们不会再收到错误。好哇!但是该函数不再被调用。嘘!

代码语言:javascript
复制
-- declare function names before calling them!
function fOne = ()
function fTwo = ()

fOne()
function fOne = 
(
    fTwo()
)

function fTwo = 
(
    messageBox ("Hello world!")
)

那么,转发声明在Maxscript中到底是如何工作的呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-15 16:49:41

对于我未来的自己:保持一切本地化。将节函数声明为(本地)变量。请注意定义函数的代码中的位置

代码语言:javascript
复制
( -- put everything in brackets

    (
    -- declare the second function first!
    local funcTwo

    -- declare function names before calling them!
    function funcOne = ()
    function funcTwo = ()

    funcOne()

    function funcOne = 
    (
    funcTwo()
    )

    function funcTwo = 
    (
    messageBox ("Hello world")
    )
)
票数 1
EN

Stack Overflow用户

发布于 2013-04-02 19:54:25

你不能在声明之前调用某个东西...它不是actionscript...它会在你第二次运行代码时起作用,因为它可以找到函数...

代码语言:javascript
复制
struct myFunc (
    function fOne =  (
        fTwo()
    ),
    function fTwo =  (
        messageBox ("Hello world!")
    )
)
myFunc.fOne()
票数 2
EN

Stack Overflow用户

发布于 2015-11-17 01:30:29

"::“是关键字。遗憾的是,这并不是一个广为人知或有文档记录的特性。http://lotsofparticles.blogspot.ie/2009/09/lost-gems-in-maxscript-forcing-global.html

代码语言:javascript
复制
::fOne() -- this will error if forward declaration is not working.

function fOne = 
(
    ::fTwo()
)

function fTwo = 
(
    messageBox ("Hello world!")
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15759933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档