ruby_proc_lambda 차이

1310 단어 lambda

책을 보는 가장 큰 장점은 지식을 아는 것이다. 장래에는 많은 시간을 절약할 수 있다. 예를 들어 방법을 알고 가능한 버그가 존재하는 곳을 아는 것이다.
실천의 장점은 이 지식들을 이해하고 깊이 이해하는 것으로 바꾸는 것이다.
 
ruby_proc_lambda 차이점:
proc: 프로크의 코드가 현재 방법에 있는 것처럼 이 코드에return이 있으면 전체 방법이 종료됩니다
lambda: 현재 방법 이외의 방법처럼return은 결과를 현재 문장에 되돌려주고 다음 문장은 계속 실행합니다
 
본질적으로 이해하면python의 yield가 실행하는 세부 사항과 루비 자체의 리버를 참고할 수 있다
현재 문장이 lambda에 닿으면 실행 바늘을 lambda의 Block에 가리키며 현재 실행 context를 양보하고 실행이 끝난 후에 돌아옵니다.
그러나proc의 Block은 현재context에서 실행되며 실행context의 양도가 존재하지 않습니다.
 
from  http://samdanielson.com/2007/3/19/proc-new-vs-lambda-in-ruby 아주 좋은 예:
 
def foo
  f = Proc.new { return "return from foo from inside proc" }
  f.call # control leaves foo here
  return "return from foo"
end

def bar
  f = lambda { return "return from lambda" }
  f.call # control does not leave bar here
  return "return from bar"
end

puts foo # prints "return from foo from inside proc"
puts bar # prints "return from bar"
 
 
 
(
(
(
||
)
)
)
 
 

좋은 웹페이지 즐겨찾기