1、该帖子用于收集一些不常用的,但在有的情况下又比较重要的一些问题,主要针对ruby语言,不是局限于rgss。比如:什么是迭代器、是什么块、怎么重定义模块方法、pack怎么用等。
2、只要是这些问题你有什么不明白的,可以在这里提出来,我或者其他人会尽力解决。当然你觉得比较好了,也可以说出来和大家分享。
3、普通的关于rm中脚本的一些问题,比如菜单什么的就不要在这个帖子里问了,直接在技术区or新人区发问就行,灌水等会被删除帖子。
1、该帖子用于收集一些不常用的,但在有的情况下又比较重要的一些问题,主要针对ruby语言,不是局限于rgss。比如:什么是迭代器、是什么块、怎么重定义模块方法、pack怎么用等。
2、只要是这些问题你有什么不明白的,可以在这里提出来,我或者其他人会尽力解决。当然你觉得比较好了,也可以说出来和大家分享。
3、普通的关于rm中脚本的一些问题,比如菜单什么的就不要在这个帖子里问了,直接在技术区or新人区发问就行,灌水等会被删除帖子。
以下引用美兽于2006-12-20 8:58:02的发言:
yield 是什么意思,上次叶子说过一回,但似乎我理解上有出入,RGSS里这个东西一直没完全理解.
以下引用Melodia于2006-12-20 9:24:50的发言:
不厌其烦地再不好意思地问句:
....为什么我建立新的rb文件时..总是一打开就立刻关闭掉...
以下引用simounF于2006-12-20 10:04:41的发言:
API可以传送的参数有哪些,如果想要传些复杂的参数(如数组)该用什么方法
好像同一方法重定义多次(把RTAB多复制几份)会发生栈深度过深的错误,这是为什么
特殊方法是什么意思,有什么用处
以下引用灼眼的夏娜于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 最后编辑]
# 返回值为 false 的情况下
if result == false
# 结束
return false
end
# 继续
return true
以下引用Benavii于2006-12-20 23:48:00的发言:
大家都问很高深的问题我问个白点的……正则表达式是什么
看了F1的解释,仍然不理解orz
还有,哈希表和普通数组有什么区别
以下引用link006007于2006-12-21 1:03:12的发言:
以前问过的一个问题,现在忽然又想起来还没有解决...
就是关于 ruby 数组的 结构.
在 Ruby 的数组中, 是不要预定空间长度的, 而且是可以动态的扩展的. 这个和 C 中的数组
在性质上已经不一样了. 应该更像是向量或者链表这种数据结构,但又根本不是,
因为, 在内部数据的类型上, 似乎可以不受数组内的数据必须是同一类型的数据的限制(弱类型的优势?), 即使是链表, 也要有指向特定数据类型的指针吧?
所以我对它的结构很感兴趣, 它是怎样实现的?
(不知道为什么,我载下来时运行就一直报错, 后来给我删的面目全非, 现在当当看Array.c 看不出什么明堂来 ... 缺失东西太多了... 我果然是万年小白)
贪心的某人爬走 ... ...
[本贴由作者于 2006-12-21 1:23:05 最后编辑]
以下引用柳柳于2006-12-21 1:27:25的发言:
for actor in $game_party.actors
yield actor
end
小夏,这个如果不用yield来写,应该是什么样子呢?此外这个东西:
$game_temp.message_proc = Proc.new { @message_waiting = false }
是做什么用的?
$game_system.magic_number = $data_system.magic_number
这个东西是什么用处?
以下引用六脉神剑于2006-12-21 8:45:00的发言:
一个遗留了很久的问题:
Interpreter 7的最后定义事件中脚本的解释器里,有这么个东西:
# 返回值为 false 的情况下
if result == false
# 结束
return false
end
# 继续
return true
这样当在事件第一行的脚本中写xx = false的时候,result返回了false,接着这个方法也跟着返回,于是进入了无限恶性循环。
这里不知道为什么要做这个判断。尝试把这里改为返回永真,之后也没有发现运行不正常。
$game_switches[1] = false ,这样就出现问题了,程序会卡住,但他怎么也看不出原因在哪,又没有死循环什么的,所以需要注意下这个问题。
以下引用美兽于2006-12-21 18:30:21的发言:
话说改成真,真的没副作用吗???
以下引用柳柳于2006-12-21 22:43:32的发言:
result = eval(script)
# 返回值为 false 的情况下
if result == false
# 结束
return false
end
# 继续
return true
这个东西和
return eval(script)
有什么区别?……
这个eval是怎么return的?为何第一行是=false就直接return一个false?
题外话,感觉小夏像是某种答题机一类的。
为何第一行是=false就直接return一个false?
以下引用六脉神剑于2006-12-23 5:04:23的发言:
为何第一行是=false就直接return一个false?
# 第一行
a = false;
以下引用六脉神剑于2006-12-23 11:26:01的发言:
只要在false那个算式上面写有任何东西(包括注释)就可以不返回false……
# 第一行
a = false;
也就是说……难道,只要脚本中不是只有一个值为false的算式,result就不会返回false?
真小夏(5102040) 15:50:53
呃 。。 汗 。。 8就是 内存益出而已嘛。。v-
以下引用尤莉斯于2006-12-26 20:51:03的发言:
以下引用六脉神剑于2006-12-23 11:26:01的发言:
只要在false那个算式上面写有任何东西(包括注释)就可以不返回false……
# 第一行
a = false;
也就是说……难道,只要脚本中不是只有一个值为false的算式,result就不会返回false?
不是这样的吧``` 只要脚本有最后计算的那条语句的值为false 就会返回false的,不论第一行是否有东西
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |