美文网首页
如何进行代码块打包 && proc vs la

如何进行代码块打包 && proc vs la

作者: antig | 来源:发表于2016-08-01 13:21 被阅读34次

    proc和lambda的对比:

    proc和lambda都是代码块打包的工具
    不同之处在于:
    proc对参数的自适应性,多则删,少填nil;lambda严格匹配
    proc从block中返回,而lambda从function中返回

    block is not a object in truth,but method is a clallable object

    callable objects wrap-up

    可调用对象本质上是可以执行的代码片段(拥有自己的作用域)
    块在定义它的作用域中执行;
    proc也跟块一样,也在定义它们的作用域中执行
    lambda和proc一样都是闭包,同样在定义它的作用域中执行
    method绑定于对象,在绑定的对象的作用域中执行,它们可以与这个作用域解除绑定,再重新绑定到另一个对象的作用域上。(与其说绑定到对象上,不如说绑定到作用域上。)
    在方法和lambda中,return语句从可调用对象(我的理解是function)中返回,在block和proc中,return从定义可调用对象的原始上下文(我的理解是块本身)中返回。
    如果proc代码块中的ruturn引起错误,可以通过隐去return关键字,来避免错误的出现。
    一种可调用对象,可以转换成另一种可调用对象:
    Proc.new()
    Method#to_proc()
    & operator

    相关文章

      网友评论

          本文标题:如何进行代码块打包 && proc vs la

          本文链接:https://www.haomeiwen.com/subject/dhixsttx.html