루비: proc 및 람다
2918 단어 ruby
예시
hash = {foo: :bar}
nested_array = [[1, 2]]
proc_printer = Proc.new {|a, b| puts "a: #{a}, b: #{b}" }
lambda_printer = lambda {|a, b| puts "a: #{a}, b: #{b}" }
hash.each(&proc_printer) # => a: foo, b: bar
nested_array.each(&proc_printer) # => a: 1, b: 2
hash.each(&lambda_printer) # => a: foo, b: bar
nested_array.each(&lambda_printer) # => wrong number of arguments (given 1, expected 2) (ArgumentError)
무슨 일이에요?
A
lambda
는 aproc
와 다르게 인수를 취합니다. 이 경우 중첩된 배열의 경우 배열은 proc
가 있는 두 개의 인수로 "추출"되는 반면 lambda
가 있는 하나의 배열로 전달됩니다.Proc
는 블록처럼 동작하고 lambda
는 메서드처럼 동작합니다. 일반적으로 블록과 함께 사용되는 each
와 같은 메서드와 함께 사용할 때 proc
대신 lambda
를 사용하는 것이 좋습니다.
Reference
이 문제에 관하여(루비: proc 및 람다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/okuramasafumi/ruby-proc-and-lambda-286d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)