-2

我正在寻找有关 Ruby 解释器的信息。我知道它是一种解释性语言,我想了解优化是否是即时完成的。一个简单的例子是 fiz-buzz 问题。解释器是否将尝试解决 x%3 == 0 && x%5 == 0 转换为 x%15 == 0 ?很容易看到 gcc 标志及其作用。有什么地方我可以看到红宝石的相同之处吗?口译员具体做什么?

4

2 回答 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 回答