다음을 고려하세요:
response = responses.to_a.first
이것은 responses
또는 의 첫 번째 요소를 반환합니다 nil
. 조건문 nil
은 false
우리가 쓸 수있는 것처럼 취급하기 때문에 :
response = responses.to_a.first
if response
# do something ('happy path')
else
# do something else
end
다음보다 더 읽기 쉽습니다.
if response.nil?
# do something else
else
# do something ('happy path')
end
if (object)
패턴은 루비 코드에서 매우 일반적입니다. 또한 리팩토링으로 이어집니다.
if response = responses.to_a.first
do_something_with(response)
else
# response is equal to nil
end
Ruby 메소드는 nil
기본적으로 리턴된다는 것을 기억하십시오 . 그래서:
def initial_response
if @condition
@responses.to_a.first
else
nil
end
end
다음과 같이 단순화 할 수 있습니다.
def initial_response
if @condition
@responses.to_a.first
end
end
그래서 우리는 더 리팩토링 할 수 있습니다 :
if response = initial_response
do_something_with(response)
else
# response is equal to nil
end
이제 돌아 오는 nil
것이 항상 최선의 아이디어는 아니라고 주장 할 수 nil
있습니다. 그것이 어디에서나 확인하는 것을 의미하기 때문입니다 . 그러나 그것은 또 다른 물고기 주전자입니다. 객체 "존재 또는 부재"에 대한 테스트가 빈번한 요구 사항이므로, 객체의 진실성은 루비의 유용한 측면이지만, 언어를 처음 접하는 사람들에게는 놀라운 일입니다.