|
发表于 2008-12-6 21:42:58
|
显示全部楼层
嗯,LZ,我提出几点意见吧。
第一,对于那些运行时只有一行的函数,你完全不需要特意的创建一个函数这么麻烦。举例来说吧。
[codes=jass]function Fallh takes handle h returns nothing
call FlushStoredMission(udg_gc,I2S(H2I(h)))
endfunction
你使用Wehelper就可以这样来处理,
//! define Fallh(h) FlushStoredMission(udg_gc,I2S(H2I(h)))[/codes]
[codes=jass]function SetUnitAbilityPositionX takes handle h ,real x returns nothing
call StoreReal(udg_gc, "UnitAbilityPositionX" , I2S(H2I(h)) , x )
endfunction
你可以使用
//! define SetUnitAbilityPositionX(h,x) StoreReal(udg_gc, "UnitAbilityPositionX" , I2S(H2I(h)) , x )[/codes]
之类的方法来简便处理。
第二。
[codes=jass]function LihhA takes handle h1 , handle h2 returns integer
if GetStoredInteger(udg_gc, I2S(H2I(h1)) , I2S(H2I(h2)) ) != null then
return GetStoredInteger(udg_gc, I2S(H2I(h1)) , I2S(H2I(h2)) )
else
return 0
endif
endfunction [/codes]
这一类的函数中,如果相对应的位置未存储数据的话,其本身的返回值就是0,如此判断多此一举了。
第三。
在函数中创建了局域变量,如
local timer t
无论你在函数中是否对它进行了赋值,都应当在最后 set t=null,或者是在创建的时候
local timer t=null
例子是:[codes=jass]function RemovePauseTimed[/codes]
很抱歉我没有看完LZ所有的代码,但是如果这些用于简化自己工作的函数全部都是由LZ自己写的话,我的感觉是已经不错了。你只需要自己多多练习,多多实验,很多问题或者是解决方案都可以自己来发现了,关于排泄其实也不必太过苛求的。 |
|