sourcecode

메서드 이름 끝에 있는 물음표는 루비에서 무엇을 의미합니까?

copyscript 2023. 6. 23. 22:22
반응형

메서드 이름 끝에 있는 물음표는 루비에서 무엇을 의미합니까?

루비에서 물음표 연산자의 목적은 무엇입니까?

때때로 다음과 같이 나타납니다.

assert !product.valid?

때때로 그것은 안에 있습니다.if건설하다.

이것은 코드 스타일 규칙입니다. 메서드가 부울 값(참 또는 거짓) 또는 참 값(또는 "참" 값)을 나타내는 개체를 반환함을 나타냅니다.

물음표는 메서드 이름 끝에 있는 유효한 문자입니다.

https://docs.ruby-lang.org/en/2.0.0/syntax/methods_rdoc.html#label-Method+Names

참고 사항?문자와 함께 루비 1.9 이후 단일 문자 문자열 리터럴의 단축형 역할을 합니다.

예:

?F # => is the same as "F"

이것은 루비 문서의 문자열 리터럴 섹션 하단 근처에서 참조됩니다.

단일 문자열을 나타내는 문자 리터럴 표기법도 있는데, 이 구문은 스크립트 인코딩에서 단일 코드 포인트에 해당하는 단일 문자 또는 이스케이프 시퀀스 다음에 물음표(?)입니다.

?a       #=> "a"
?abc     #=> SyntaxError
?\n      #=> "\n"
?\s      #=> " "
?\\      #=> "\\"
?\u{41}  #=> "A"
?\C-a    #=> "\x01"
?\M-a    #=> "\xE1"
?\M-\C-a #=> "\x81"
?\C-\M-a #=> "\x81", same as above
?あ      #=> "あ"

루비 1.9 이전 버전에서는 캐릭터의 ASCII 문자 코드를 반환했습니다.현대 루비에서 오래된 동작을 얻으려면, 당신은 다음을 사용할 수 있습니다.#ord방법:

?F.ord # => will return 70

부울값을 반환하는 메소드는 물음표로 끝나는 루비의 규약입니다.그것보다 더 중요한 것은 없습니다.

예제에서는 메서드 이름의 일부일 뿐입니다.Ruby에서는 메서드 이름에 느낌표를 사용할 수도 있습니다!

루비에서 물음표의 또 다른 예는 3진 연산자입니다.

customerName == "Fred" ? "Hello Fred" : "Who are you?"

그것은 아마도 지적할 가치가 있을 것입니다.?s는 메서드 이름에서만 사용할 수 있으며 변수에서는 사용할 수 없습니다.루비를 배우는 과정에서 저는?부울 반환 형식을 지정하여 플래그 변수에 추가하려고 시도하여 오류가 발생했습니다.이로 인해 한동안 다음과 같은 특별한 구문이 있다고 잘못 믿게 되었습니다.?s.

관련 항목:메서드 이름은 가능한데 변수 이름은 "?"로 끝날 수 없는 이유는 무엇입니까?

예를 들어,

product.valid?

실제로 함수 호출이며 이름이 지정된 함수를 호출합니다.valid?특정 유형의 "상태 테스트"/부울 함수에는 관례에 따라 함수 이름의 일부로 물음표가 있습니다.

저는 그것이 단지 부울적인 것들을 위한 관습이라고 믿습니다.약간 "라고 말하는 것과 같습니다.IsValid".

정규 표현에도 사용되며, "앞의 문자를 한 번만 반복한다"는 의미입니다.

예를 들어 정규 표현/hey?/ 자열이 " 치합니다 " 와 합니다.he그리고 "hey".

Kernel#test의 테스트 방법의 첫 번째 인수와 함께 사용하는 일반적인 규칙이기도 합니다.

test ?d, "/dev" # directory exists?
# => true
test ?-, "/etc/hosts", "/etc/hosts" # are the files identical
# => true

여기 이 문제에서 볼 수 있듯이.

언급URL : https://stackoverflow.com/questions/1345843/what-does-the-question-mark-at-the-end-of-a-method-name-mean-in-ruby

반응형