||
연산자와 rescue
을 Ruby에서 사용하는 데 차이가 있습니까?다른 점은 || 구조?
말 :
b = A.value || "5"
b = A.value rescue 5
객체 A
가 value
방법을 가지고 있지 않는 경우.
||
연산자와 rescue
을 Ruby에서 사용하는 데 차이가 있습니까?다른 점은 || 구조?
말 :
b = A.value || "5"
b = A.value rescue 5
객체 A
가 value
방법을 가지고 있지 않는 경우.
||
부울 또는 연산자이다 (명심 루비, 값만 nil
및 false
부울 문맥에서 거짓으로 평가)
nil || 5
# => 5
false || 5
# => 5
4 || 5
# => 4
rescue
는 예외이다 잡기 :
fail 'bang' rescue 5
# => 5
'bang' rescue 5
# => "bang"
nil rescue 5
# => nil
예에서 A
은 value
:
A.value
# NoMethodError: undefined method `value' ...
b = A.value || 5
# NoMethodError: ...
b
# => nil
b = A.value rescue 5
b
# => 5
지금 가정이 A.value
반환 nil
: 그렇다
A.value
# => nil
b = A.value || 5
b
# => 5
b = A.value rescue 5
b
# => nil
||
은 or
연산자입니다. 첫 번째 줄의 내용은 다음과 같습니다.
b를 A.value로 설정하십시오. b가 아닌 경우 (즉, b가 nil 또는 false 인 경우) 문자열 "5"로 설정하십시오.
Rescue를 사용하면 예외로부터 복구 할 수 있습니다. 두 번째 줄은 다음과 같습니다.
b를 A.value로 설정하십시오. A.value에서 예외가 발생하면 문제를 무시하고 대신 b를 5로 설정하십시오.
값이없는 메소드가있는 객체 A의 경우 첫 번째 행에서 앱이 중단됩니다.
value 메소드가 nil을 반환하는 객체 A의 경우 두 번째 행은 b를 nil로 설정합니다.
다른 사람은 이미 인라인 rescue
이 StandardError
구출에 동등있는 동안, 또 하나 개의 차이는, ||
정직한 운영자는 것을, 당신에게 무엇을하는 그게 various manuals of style passionately frown upon입니다. 즉, 인라인 rescue
은 외설스러운 해킹이며, 프로덕션 코드에서 너무 자주 사용해서는 안됩니다. 가볍게 꾸며 놓은 begin ... rescue ... else ... ensure ... end
문장을 대신 사용하십시오.
덕분에 그것은 –
입니다. A.value는 항상 메서드를 찾지 않고 nil을 반환하는 것이 좋습니다. –