Project1

标题: 关于一个函数作用问题,看不懂 [打印本页]

作者: gamedev0001    时间: 2011-11-5 21:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: 精灵使者    时间: 2011-11-5 22:04
问号是可以做关键字的(大雾)或许,这个本来就是判断函数(刚才那个a or b的返回的应该是布尔变量)
作者: 后知后觉    时间: 2011-11-5 22:24
本帖最后由 后知后觉 于 2011-11-5 22:31 编辑

函数最后如果没有设置 return 返回值 会用该函数内最后一次的运算的值作为返回值.
函数的命名 在结尾处可以用 ? 和 !
带 ? 号的一般表示该函数返回的是 true/false
带 ! 号的一般表示该函数具有破坏性
还可以用 []  []= 作为函数名(Array类 Game_Switches类 Game_Variables类 都有)
关于返回值还有一个例外情况 当定义的函数名最后是 = 号的情况
返回值一定是该函数的参数.就算该函数设置了返回值 return xxx
但这样的函数的返回值还是传递给他的参数.
  1. class ABC
  2.   def initialize
  3.     @a = 2
  4.   end
  5.   def a
  6.     @a
  7.   end
  8.   def a=(a)
  9.     @a = a
  10.     return 999
  11.   end
  12. end
  13. b = ABC.new
  14. p b.a = 5  # 显示 5 而不是 999
  15. exit
复制代码
你帖的那 effect? 的定义是 RPG::Sprite 类里的
这东西就是判断实例对象的 闪烁白光、红光啊动画播放啊什么的效果是否正在进行中.
这个主要就是拦截 Scene_Battle 4 里定义的那些东西的调用
作者: 苏小脉    时间: 2011-11-6 01:10
这是 Ruby 受 Lisp 影响之处——方法以问号结尾表示“谓词"(predicate),通常返回布尔值;函数主体没有语句,只有计算,这是函数式语言风格,有别于命令式语言风格。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1