Ruby开发:irb限制、rtags与xmp工具及RDoc文档生成详解
1. irb的限制
irb的工作方式与标准Ruby解释器存在一定的不兼容性,主要问题在于局部变量的判定。
在标准Ruby中,通常通过赋值语句来判断某个名称是否为变量。如果一个名称未被赋值,Ruby会将其视为方法调用。例如:
eval "var = 0"
var
运行这段代码会产生错误:
prog.rb:2: undefined local variable or method `var'
for main:Object (NameError)
这是因为赋值语句在字符串中,Ruby没有将其纳入考虑。
而在irb中,语句是按输入顺序执行的:
irb(main):001:0> eval "var = 0"
0
irb(main):002:0> var
0
在irb里,赋值操作在第二行执行前就已完成,所以 var
能被正确识别为局部变量。
若要更贴近Ruby的行为,可以将语句放在 begin/end
对中:
irb(main):001:0> begin
irb(main):