ProcとLambdaの違い
ProcとLambdaの違いはネット上ではっきり言える文字が見つからなかった
自分の理解を書きなさい忘れないようにまた考えなければならない.
Procとlambdはいずれも1つのコードブロックを定義することに相当し、このコードブロックは必要に応じてcall(x,y,*z)を通じて起動することができるが、彼らの違いはProcのコードが現在の呼び出し方法に影響し、lambdのコードは自分のコードブロックでしか機能しないことであり、以下のように広く伝播する例で説明できるので、ここで引用する.
しゅつりょく
しゅつりょく
自分の理解を書きなさい忘れないようにまた考えなければならない.
D:\>qri Proc
------------------------------------------------------------ Class: Proc
+Proc+ objects are blocks of code that have been bound to a set of
local variables. Once bound, the code may be called in different
contexts and still access those variables.
D:\>qri lambda
---------------------------------------------------------- Kernel#lambda
proc { |...| block } => a_proc
lambda { |...| block } => a_proc
------------------------------------------------------------------------
Equivalent to +Proc.new+, except the resulting Proc objects check
the number of parameters passed when called.
Procとlambdはいずれも1つのコードブロックを定義することに相当し、このコードブロックは必要に応じてcall(x,y,*z)を通じて起動することができるが、彼らの違いはProcのコードが現在の呼び出し方法に影響し、lambdのコードは自分のコードブロックでしか機能しないことであり、以下のように広く伝播する例で説明できるので、ここで引用する.
def foo
f = Proc.new { return "return from foo from inside proc" }
puts f.call #call return, foo
return "return from foo"#
end
def bar
f = lambda { return "return from lambda" ;puts "continue?"}
puts f.call #return (lambda)f , puts "continue?"
return "return from bar"# , lambda return bar
end
puts foo
しゅつりょく
return from foo from inside proc
puts bar
しゅつりょく
return from lambda
return from bar