이 구문 (안부 인증)을 사용하는 일부 코드를 사용하고 있습니다.무엇이 있습니까 !! 루비로 해?
def logged_in?
!!current_user()
end
이를 위해 인터넷 검색을 시도하지만, 그냥 무시하는 것 같다 "!", 어떻게 같은 문자열을 검색하는 방법에 대한 정보를 찾을 수 말해 줄 수 대답을 받아 들일 것입니다! google에서.
이 구문 (안부 인증)을 사용하는 일부 코드를 사용하고 있습니다.무엇이 있습니까 !! 루비로 해?
def logged_in?
!!current_user()
end
이를 위해 인터넷 검색을 시도하지만, 그냥 무시하는 것 같다 "!", 어떻게 같은 문자열을 검색하는 방법에 대한 정보를 찾을 수 말해 줄 수 대답을 받아 들일 것입니다! google에서.
두 번 부정합니다. 첫 번째 !
은 current_user
이 nil
또는 false
이 아닌 경우 false
으로 변환합니다. 그 후에는 true
으로 변환됩니다. 따라서 결과는 항상 부울 값이고 current_user
값이 아닙니다. current_user
이 false
또는 nil
이 아닌 경우 결과는 항상 true
입니다. 그렇지 않으면 false
입니다.
블로그 게시물을 다룹니다
는이 문서는 동일한 코드를 사용하는 것 : 기본적으로
http://toolmantim.com/articles/bangbang_your_nil_is_dead
를, 단지를하지 (해당하는 의미처럼 보이는 !) 연산자를 두 번 사용합니다. 본질적으로 메서드가 true, false 또는 nil 대신 true 또는 false를 반환하도록 강요합니다. 전무를 반환합니다
def logged_in?
@current_user()
end
를 호출 @current_user
이 전무 경우입니다
. true를 돌려줍니다 (싱글 플레이)
def logged_in?
[email protected]_user()
end
로 변경하고 추가 변경 (이중 탕)
def logged_in?
[email protected]_user()
end
는 false를 반환합니다 - 전무보다 더 많은 적용 (그리고 가능)이다.
def logged_in?
[email protected]_user().nil?
end
을하지만 @current_user
이 거짓 일 때 그 사건을 포함하지 않으며, 나는 !!
이보기 위하여 더 좋은 생각 :
또 다른 방법이 될 것이다 씁니다.
음수 연산자는 !
입니다. 두 번입니다. 이것은 동일한 진리 값을 가지지 만 명시 적으로 부울 만 갖는 값을 제공합니다.
루비에 (false
및 nil
외에 아무것도) "true"로 간주됩니다 많은 값이 있고, 고려 몇 (모두 false
및 nil
) "거짓"으로. 첫 번째 부정은 모든 참 값을 false
으로 변환하고 모든 거짓 값은 true
으로 변환합니다. 그런 다음 두 번째 부정은 원래 값과 동일한 진리 값을 갖는 값을 그대로 두지 만 실제 값 true
또는 false
만 허용합니다.
사람들이 logged_in?
을 현재 사용자에게 액세스하는 방법으로 사용하지 못하도록하려는 경우 유용 할 수 있습니다. 대신 부울을 반환하기를 원합니다.
그것은 더 명확하고 자세한 정보에 해당 IT : "!"
def logged_in?
if current_user()
true
else
false
end
end
문자는 뱅 (bang)이라고 부릅니다. "루비 더블 뱅"에 대한 인터넷 검색은 좋은 결과를 보여줍니다. – shsteimer
아아, 그렇습니다. 느낌표가 깜박 거리는 것을 잊어 버렸습니다. 강타는 미국의 용어입니까? 영국에서는 소프트웨어 사용법에 대해서만 들어 본 적이 있습니다. 또 다른 예는 영국에서 일반적으로 C 해시라고하는 C#입니다. – Jim
[가능한 것은 무엇입니까? 루비 의미합니까?] (http://stackoverflow.com/questions/524658/what-does-mean-in-ruby) –