我正在寻找有关 Ruby 解释器的信息。我知道它是一种解释性语言,我想了解优化是否是即时完成的。一个简单的例子是 fiz-buzz 问题。解释器是否将尝试解决 x%3 == 0 && x%5 == 0 转换为 x%15 == 0 ?很容易看到 gcc 标志及其作用。有什么地方我可以看到红宝石的相同之处吗?口译员具体做什么?
问问题
304 次
2 回答
0
不是真正的答案,而是一个反例:
class Fixnum
def %(obj)
obj < 10 ? 0 : 1
end
end
x = 15
x % 3 == 0 && x % 5 == 0
# => true
x % 15 == 0
# => false
x
在不知道实现什么或如何实现的情况下,很难优化这个表达式x#%
。
于 2013-05-30T18:11:31.687 回答
0
由于它是一种解释型语言,它会一次运行一行代码,直到出现第一个错误。关于如何评估每一行有一些优化,但这些也应该出现在其他语言中。例如惰性评估:
false && x>4 && x!=0
在假后跟逻辑“和”之后,它只是忽略了其余部分。如果您愿意,您可以让解释器在启动时在 ~/.irbrc 中加载某些内容。
于 2013-05-30T22:50:24.730 回答