반응형
루비 앰퍼샌드 콜론 바로가기
중복 가능성:
루비에서 지도(&:name)는 무엇을 의미합니까?
루비에서, 내가 만약 한다면, 나는 알고 있습니다.
some_objects.each(&:foo)
와 같습니다.
some_objects.each { |obj| obj.foo }
그것은,&:foo
블록을 생성합니다.{ |obj| obj.foo }
프로세스로 변환하여 각 프로세스에 전달합니다.왜 이것이 작동합니까?루비만의 특별한 경우인가요, 아니면 이것이 그대로 작동하는 이유가 있나요?
말하자면 당신의 질문은 틀렸습니다.여기서 일어나는 일은 "암퍼샌드와 대장"이 아니라 "암퍼샌드와 개체"입니다.이 경우 콜론은 기호를 위한 것입니다.그래서.&
그리고 있습니다.:foo
.
그&
호출들to_proc
개체에 대해 블록으로 전달합니다.루비에서.to_proc
에 구현됨Symbol
이 두 호출이 동일하도록 합니다.
something {|i| i.foo }
something(&:foo)
요약하자면:&
호출들to_proc
객체에 대한 블록으로 메서드에 전달하고 Ruby는 이를 구현합니다.to_proc
에Symbol
.
앰퍼샌드와 심볼의 조합은 특별한 것이 없습니다.다음은 (ab) 정규식을 사용하는 예입니다.
class Regexp
def to_proc
->(str) { self =~ str ; $1 }
end
end
%w(station nation information).map &/(.*)ion/
=> ["stat", "nat", "informat"]
아니면 정수.
class Integer
def to_proc
->(arr) { arr[self] }
end
end
arr = [[*3..7],[*14..27],[*?a..?z]]
arr.map &4
=> [7, 18, "e"]
필요한 사용자arr.map(&:fifth)
있을 때arr.map &4
?
언급URL : https://stackoverflow.com/questions/1961030/ruby-ampersand-colon-shortcut
반응형
'sourcecode' 카테고리의 다른 글
자체에 WPF 바인딩 (0) | 2023.06.02 |
---|---|
안드로이드 에뮬레이터에서 GPS 위치를 에뮬레이트하는 방법은 무엇입니까? (0) | 2023.06.02 |
하나의 양식에 두 개의 제출 단추 (0) | 2023.06.02 |
루비 상속 대 믹스인 (0) | 2023.06.02 |
루비의 해시 값을 기준으로 해시 배열 내에서 검색하려면 어떻게 해야 합니까? (0) | 2023.05.28 |