Ruby中的语法错误,Do中的意外管道字符

And*_*ndy 2 ruby

我这次试着简明扼要!我还在使用Project Euler,这次回到#2.我真正的问题是我对Ruby很糟糕.当我运行以下代码时

x = 1
y = 2
sum = 2
while x >= 4_000_000 do |x|

  sum += y if y % 2 == 0

  z = x + y

  x = x ^ y   # xor magic
  y = x ^ y   # xor magic
  x = x ^ y   # xor magic

  y = z 
end

p sum
Run Code Online (Sandbox Code Playgroud)

我的翻译推出了以下输出:

/Users/Andy/Documents/Programming/Ruby/ProjectEuler/P2.rb:4: syntax error, unexpected '|'
while x >= 4_000_000 do |x|
                         ^
Run Code Online (Sandbox Code Playgroud)

我正在阅读为什么(Poignant)指南Ruby,我很确定我的管道语法是正确的.有人能指出我在这里做错了什么吗?我已经尝试过很多不同的方式搞砸了,而且我很快就出现了

Bor*_*lid 6

while (x >= 4_000_000)
    foo
end
Run Code Online (Sandbox Code Playgroud)

您甚至不必传入x,因为它可以在封闭块的范围内访问.


ick*_*fay 6

while没有阻止.删除do |x|部分.