找回密码
 点一下
查看: 1604|回复: 8

jass语法问题,高手速进

[复制链接]
发表于 2008-2-28 01:39:37 | 显示全部楼层 |阅读模式
jass语法中的函数必须先定义后使用,不然会编译失败

我在AAA函数中调用BBB,BBB中又调用AAA,应该怎么写?

如下:
function AAA takes nothing returns nothing
    call BBB()
endfunction

function BBB takes nothing returns nothing
    call AAA()
endfunction
发表于 2008-2-28 04:12:29 | 显示全部楼层
这不就成了无限递归了吗,AAA不能调用BBB
回复

使用道具 举报

发表于 2008-2-28 05:08:05 | 显示全部楼层
好像前面的不能调用后面的函数
回复

使用道具 举报

 楼主| 发表于 2008-2-28 05:14:02 | 显示全部楼层
只是举了例子而已,例如可以写成下面这样
function AAA takes trigger i,returns integer
    if  i == 0 then
        return 1;
    else
        return BBB( i-1 );
    endif
endfunction

function BBB takes trigger i,returns integer
    if  i == 1 then
        return 1;
    else
        return AAA( i-1 )+AAA( i-2 );
    endif
endfunction

C里可以通过函数预定义声明来避免上面的问题,
java里也有import来声明定义
。。。。。。
回复

使用道具 举报

发表于 2008-2-28 09:42:36 | 显示全部楼层
声明在前的函数无法call声明在后的函数~~却可以用下面这个函数来解决~~

function AAA takes nothing returns nothing
    call ExecuteFunc("BBB")
endfunction
回复

使用道具 举报

发表于 2008-2-28 10:08:10 | 显示全部楼层
意思就是不能带参数了么????????????????????
回复

使用道具 举报

发表于 2008-2-28 10:10:56 | 显示全部楼层
没错~~你只能再在外面套一个无参数函数~~用些全局变量来传递了~~
回复

使用道具 举报

 楼主| 发表于 2008-3-2 17:00:08 | 显示全部楼层
高手啊,解惑了
回复

使用道具 举报

发表于 2008-3-14 13:23:30 | 显示全部楼层
call ExecuteFunc("Func")
牵涉到线程的问题,如果用全局变量传参,著名的生产者消费者问题会出现吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-7-9 05:39 , Processed in 0.032440 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表