设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: 雷欧纳德
打印 上一主题 下一主题

RUBY问题收集帖

 关闭 [复制链接]

Lv1.梦旅人

月下可怜人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2005-11-23
帖子
4085

第1届短篇游戏比赛亚军

1
发表于 2006-12-20 16:58:02 | 显示全部楼层
yield 是什么意思,上次叶子说过一回,但似乎我理解上有出入,RGSS里这个东西一直没完全理解.
纵然千里外,我等雁归来。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

月下可怜人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2005-11-23
帖子
4085

第1届短篇游戏比赛亚军

2
发表于 2006-12-20 19:25:06 | 显示全部楼层
以下引用灼眼的夏娜于2006-12-20 9:17:19的发言:


以下引用美兽于2006-12-20 8:58:02的发言:

yield 是什么意思,上次叶子说过一回,但似乎我理解上有出入,RGSS里这个东西一直没完全理解.




其实在ruby里,yield就是实现迭带器的,比如Array里的each什么都是通过这个来实现的。
首先,yield必须和块连用,块就是跟在方法后面的{},可以暂时理解为参数也行。比如:
def test
yield
yield
end

test{p 'test'}

会p两次 test。现在来解释下这个方法的运行:首先调用方法,然后接着到后面的{},但这里不会运行,而直接进入方法里面,也就是执行yield,而yield就是使先前的块执行,也就是{}里的内容,所以p了两次test。
然后这种:
def test
yield(1)
end
test{|i| p i}
yield带参数的,执行的时候就会把参数传递给||中间这个变量,然后执行块。

所以,现在我们来定义Array的each方法就是这样:
def each
   for i in 0...size
     yield(self)
   end
end

最后,block_given?这个可以判断方式是否带块,这样使用:
def test
if block_given?
   yield
   p 'block'
else
   p 'noblock'
end
end
test{}
test


[本贴由作者于 2006-12-20 9:35:08 最后编辑]



谢谢了.{/ll}
纵然千里外,我等雁归来。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

月下可怜人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2005-11-23
帖子
4085

第1届短篇游戏比赛亚军

3
发表于 2006-12-22 02:30:21 | 显示全部楼层
$game_switches[1] = false ,这样就出现问题了,程序会卡住,但他怎么也看不出原因在哪,又没有死循环什么的,所以需要注意下这个问题。




话说这个问题偶遇到不素一次两次了,就是新建的变量$new_name,放在条件分歧中也常常遇到这个问题,最后只好把布尔值改成0和1两个整数来用.......原来如此,原来如此,

话说改成真,真的没副作用吗???
纵然千里外,我等雁归来。
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-6-8 00:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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