this 및 this을 비롯한 몇 가지 내용을 읽었지만 아래의 예는 그들이 말하는 내용과 다릅니다. 실제로 한 사람이 토론에서 비슷한 예를 들지만 무시됩니다.이 한 줄의 조건부에서 다르게 대우가 처리되는 이유는 무엇입니까?
그래서, (조건에 할당에 대한 경고를 무시) IRB에서 실행 :
(puts x) if (x = 0) # NameError: undefined local variable or method `x'...
x # => 0
(puts x) if (x = 0) # "0", => nil
하지만 두 번째 시간 오류가 없습니다.
"파서가 실제로 무엇을하고 있는지 이해하면이 최적화가 모두 명확 해집니다"라는 의미 에서조차 의미가 있습니까? 왜냐하면 나에게는 꽤 바람직하지 않은 것처럼 보입니다.
는 오류를 발생시키지 않습니다if newvar=0
puts newvar
end
에 (오른쪽?) 위의 조건이 동일해야, 명확해야합니다.
업데이트 :이 질문 이후로이 주제에 대해 더 많은 게시물이 있습니다. 예 :
http://seejohncode.com/2012/07/31/ruby-gotcha-single-line-conditionals/.
그는 범위 규칙이 변경된 Ruby 1.9를 사용하고 있다고 생각합니다. – Serabe
이것은 흥미 롭습니다. 나는 실제로 1.8.7, 1.9.2 및 jruby를 시도했다. rvm은 루비니 우스를 설치하기 위해 영원히 투옥하고 있었기 때문에 나는 그것을 시험해보기 전에 게시했습니다. – ohspite