필자는 생각한 것을하지 않는 경우 인라인을 사용하고 명확성을 위해 콘솔 예제로 추출했습니다.테스트가 작동하면 왜 인라인되지 않습니까?
필자는 인라인 if 구문이 다중 줄 if와 동일하다고 생각했지만 그렇지 않은 것처럼 보입니다.
foo = "chunky"
(bar1 = foo) if (!defined?(bar1) && foo)
bar1
이 경우 bar1은 nil로 끝납니다. 내가
foo = "chunky"
if !defined?(bar2) && foo
bar2 = foo
end
bar2
에 구조 조정을 경우 작동 - 바 2로 설정 한 경우에 "땅딸막 한"(나는 각각의 경우에 정의되지 않은 변수를 사용하고 있는지 확인하는 대신 두 번째 예에서 BAR1의 바 2를 사용했습니다).
인라인은 항상 bar1을 무언가로 설정하고 기본값을 nil로 설정합니까? 나는 if가 if falsy를 반환한다면, if가 if 부분보다 먼저 평가하지 않는다고 생각했다.
관련 질문 (아마도 중복 - 말할 수 없다) : http://stackoverflow.com/questions/3775402/rubys-foo-true-if-defined-foo-wont-work -as-expected –