Итак, я пытаюсь выучить ruby, задавая вопросы по проекту euler, и столкнулся с парой вещей, которые я не могу объяснить, и оператор запятой? находится в середине обоих. Я не смог найти хорошую документацию для этого, может быть, я просто не использую Google, как я должен, но хорошая рубиновая документация кажется немного разреженной. , .
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'? из того, что я могу собрать, команда шага работает как (range) .step (step_size), но это, кажется, делает (начальная точка) .step (конечная точка, 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(", ")