tarefa paralela ruby, pergunta passo
então, estou tentando aprender ruby fazendo algumas perguntas sobre o projeto e encontrei algumas coisas que não consigo explicar e o operador vírgula? está no meio de ambos. não consegui encontrar boa documentação para isso, talvez não esteja usando o google como deveria, mas uma boa documentação em rubi parece um pouco esparsa. . .
1: como você descreve como isso está funcionando? o primeiro trecho é o código ruby que eu não entendo; o segundo é o código que escrevi que faz a mesma coisa somente depois de rastrear minuciosamente o primeiro:
#what is this doing?
cur, nxt = nxt, cur + nxt
#this, apparently, but how to describe the above?
nxt = cur + nxt
cur = nxt - cur
2: no exemplo a seguir, como você descreve o que a linha com 'step' está fazendo? pelo que eu consigo entender, o comando step funciona como (range) .step (step_size), mas isso parece estar funcionando (ponto de partida) .step (ponto de terminação, step_size). Estou certo com essa suposição? onde encontro um bom documento sobre isso?
#/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(", ")