所以,我试图通过做一些项目欧拉问题来学习红宝石,我遇到了一些我无法解释的事情,以及逗号?运算符?位于两者的中间。我一直没能找到好的文档,也许我只是没有按照我应该的那样使用谷歌,但是好的 ruby 文档似乎有点稀疏。. .
1:你如何描述这是如何工作的?第一个片段是我不明白的 ruby 代码,第二个是我编写的代码,它只有在煞费苦心地跟踪第一个代码后才做同样的事情:
#what is this doing?
cur, nxt = nxt, cur + nxt
#this, apparently, but how to describe the above?
nxt = cur + nxt
cur = nxt - cur
2:在下面的例子中,你如何描述带有'step'的行在做什么?据我所知,step 命令的工作方式类似于 (range).step(step_size),但这似乎正在执行 (starting_point).step(ending_point, step_size)。我对这个假设是否正确?我在哪里可以找到这方面的好文档?
#/usr/share/doc/ruby1.9.1-examples/examples/sieve.rb
# sieve of Eratosthenes
max = Integer(ARGV.shift || 100)
sieve = []
for i in 2 .. max
sieve[i] = i
end
for i in 2 .. Math.sqrt(max)
next unless sieve[i]
(i*i).step(max, i) do |j|
sieve[j] = nil
end
end
puts sieve.compact.join(", ")