查看: 1447|回复: 3

[已经解决] 关于一个函数作用问题,看不懂

  [复制链接]
头像被屏蔽
梦石
0
星屑
50
在线时间
4 小时
注册时间
2011-10-16
回帖
66
发表于 2011-11-5 21:36:35 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

精灵族の天使<

梦石
0
星屑
1712
在线时间
3039 小时
注册时间
2007-3-16
回帖
33092

开拓者贵宾

发表于 2011-11-5 22:04:15 | 显示全部楼层
问号是可以做关键字的(大雾)或许,这个本来就是判断函数(刚才那个a or b的返回的应该是布尔变量)
回复

使用道具 举报

梦石
0
星屑
7095
在线时间
1666 小时
注册时间
2008-10-29
回帖
6612

贵宾

发表于 2011-11-5 22:24:33 | 显示全部楼层
本帖最后由 后知后觉 于 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 里定义的那些东西的调用











你知道得太多了

回复

使用道具 举报

梦石
0
星屑
310
在线时间
953 小时
注册时间
2007-4-25
回帖
798
发表于 2011-11-6 01:10:13 | 显示全部楼层
这是 Ruby 受 Lisp 影响之处——方法以问号结尾表示“谓词"(predicate),通常返回布尔值;函数主体没有语句,只有计算,这是函数式语言风格,有别于命令式语言风格。
su@rpg.blue:~> repeat 1 fortune
Matz is nice, so we are nice.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部