我一直在寻找有关Ruby解释器的信息。我知道这是一种解释性语言,我想知道优化是否即时完成。一个简单的例子就是fiz-buzz问题。解释器是否转换尝试解决x%3 == 0&& x%5 == 0到x%15 == 0? 很容易看到gcc标志和它们的作用。有什么地方我可以看到相同的红宝石? 口译员到底做了什么?
答案 0 :(得分: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#%
是如何实现的,那么很难优化此表达式。
答案 1 :(得分:0)
由于它是一种解释型语言,它将一次一行地运行代码,直到第一个错误。关于如何评估每一行有一些优化,但这些也应该出现在其他语言中。例如懒惰的评价:
false && x>4 && x!=0
在false之后是逻辑'和',它只是忽略其余的。如果愿意,您可以让译员在启动时在〜/ .irbrc中加载某些内容。