이 같은 코드가 있습니다
list << num if num.to_s.split("").map(&:to_i).map(&:factorial).inject(:+) == num
그것은 작동하고 나는 앞에 (앰퍼샌드) inject
없이 어떻게 작동 하는지 궁금합니다 . 과 (와) 의 차이점을 설명해 줄 사람을 요청 하고 있습니다.&
:+
:+
&:+
&:+
는 :+
기호 인 동안 proc로 변환됩니다 . inject
내부적으로 proc로 변환되는 수신 기호를 지원합니다.
블록을 지정하면 enum의 각 요소에 대해 블록에 누산기 값 (메모)과 요소가 전달됩니다. 대신 기호를 지정하면 컬렉션의 각 요소가 memo의 명명 된 메서드로 전달됩니다 . 두 경우 모두 결과는 메모의 새 값이됩니다. 반복이 끝나면 메모의 최종 값은 메서드의 반환 값입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다