나는 마츠의 책 "프로그래밍 루비"를 읽고있다, 그리고 9 장에서, 스레드에 대한 부분에서,이 코드 읽기 : 지도가이 문맥에서 어떻게 작동합니까?
module Enumerable
def concurrently
map{|item| Thread.new{ yield item }}.each{|t| t.join}
end
end
내가
map
방법은 배열이나 컬렉션에 활동을 위해 사용되는 알고, 그리고 이 예에서는
self
또는 일부
object
없이 표시합니다.
이 예제에서는 map
이 어떻게 작동하는지 혼란 스럽습니다.
당신은 메소드 앞부분에'self.'가 붙은 이런 유형의 구조체를 보았 기 때문에 혼란 스러울 수 있습니다. @mu가 설명했듯이, 루비는 수신기가 주어지지 않을 때 수신기가'self'라고 가정합니다. 그래서, 왜 필요하지 않을 때 (종종) '자기'를 보게 되는가? 친절한 설명은 작가가 문체상의 이유로 그것을 추가했다는 것입니다. 대부분의 사람들은 효과가없는 것을 추가하면 독자가 그 존재에 대한 이유를 생각하게하는 것을 피할 것이라는 데 동의 할 것이라고 생각합니다. 이 질문을하고 있다는 사실 자체가이 주장을지지 할 수 있습니다. –
수신자가 없을 때'self'를 추가하는 것에 대해 알고 있었지만 Enumerable 메소드'map'은 나를 혼란 시켰고 앞의 예에서'self.each'로 보여주었습니다. 나는 '자기'를 사용하는 것이 더 명확하고 분명하게, 특히 초보자들에게 적합하다고 생각합니다. –