답변:
제거 if
에서if @item.rigged ? "Yes" : "No"
삼항 연산자 양식 condition ? if_true : if_false
s/that/not that
:)
Ruby에서 조건과 표현식 의 then
일부 if
는 표현식 구분 기호 (예 : ;
개행 문자) 또는then
키워드 .
따라서이 모든 것이 작동합니다.
if @item.rigged then 'Yes' else 'No' end
if @item.rigged; 'Yes' else 'No' end
if @item.rigged
'Yes' else 'No' end
Ruby에는 조건부 연산자도 있지만 완전히 불필요합니다. 조건부 연산자는 연산자이므로 C에 필요합니다. C에서는 if
명령문이므로 값을 반환 할 수 없으므로 값을 반환하려면 값을 반환 할 수있는 무언가를 사용해야 합니다. 그리고 C에서 값을 반환 할 수있는 유일한 것은 함수와 연산자이며 만드는 것이 불가능하기 때문에if
C에서 함수 연산자가 필요합니다.
그러나 루비에서는 if
표현입니다. 실제로 모든 것이 Ruby의 표현식이므로 이미 값을 반환 할 수 있습니다. 조건부 연산자도 존재할 필요가 없습니다. 그것을 사용 혼자하자.
BTW : 끝에 물음표와 함께 질문을하는 데 사용되는 메소드의 이름을 지정하는 것이 일반적입니다.
@item.rigged?
이것은 Ruby에서 조건부 연산자를 사용할 때의 또 다른 문제를 보여줍니다.
@item.rigged? ? 'Yes' : 'No'
서로 가까이있는 여러 개의 물음표로 읽기가 어렵습니다.
다음과 같은 경우 한 줄 :
<statement> if <condition>
너의 경우:
"Yes" if @item.rigged
"No" if !@item.rigged # or: "No" unless @item.rigged
"No" unless @item.rigged
!
nil
아니라 리턴하는 점에서 다릅니다 . 조건이 충족 되지 않으면 단일 행 if 또는 not 문이 반환 됩니다. 'Yes'
item.rigged
nil
내가 아는 것에서
원 라이너 3 개
a = 10 if <condition>
예:
a = 10 if true # a = 10
b = 10 if false # b = nil
a = 10 unless <condition>
예:
a = 10 unless false # a = 10
b = 10 unless true # b = nil
a = <condition> ? <a> : <b>
예:
a = true ? 10 : 100 # a = 10
a = false ? 10 : 100 # a = 100
도움이 되길 바랍니다.