<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    Ruby 1.9概要(4) Block和Proc

    Posted on 2008-10-02 13:54 dennis 閱讀(687) 評論(0)  編輯  收藏 所屬分類: 動態語言
    1、Proc加了新方法Proc#yield,這只是Proc#call的別名方法,是為了能讓Proc也可以像block那樣傳入方法并且調用yield。
    a_proc = Proc.new {|a,b| a+b}
    a_proc.
    yield(1,2# => 3

    def test(&block)
      block.
    yield(1,2,3)
    end
    test do 
    |a,b|
       a
    +b   # => 3
    end
    test 
    &a_proc # =>3

    2、沒有參數的block的基數(參數個數,arity):
    1.8
      
    lambda{}.arity  #=> -1
    1.9
      
    lambda{}.arity #=> 0
    所謂arity就是方法調用無法忽略的參數個數。這跟Erlang,Prolog中的arity的概念并無二致。

    3、proc關鍵字現在是Proc.new的同義詞,proc在1.8的時候跟lambda關鍵字是同義詞,也就是proc定義的是一個lambda而非字面

    意義上的Proc,1.9改過來了。
    1.9:

    proc{
    |a,b|}.arity        # => 2
    proc{|a,b|}.call(1)        # => nil
    Proc.new{|a,b|}.arity        # => 2
    Proc.new{|a,b|}.call(1)        # = nil

    1.8:
    proc{|a,b|}.arity        # => 2
    proc{|a,b|}.call(1)        # => ERROR: (eval):1: wrong number of arguments (1 for 2)
    Proc.new{|a,b|}.arity        # => 2
    Proc.new{|a,b|}.call(1)        # => nil

    1.8時候第二個調用出錯的原因在于lambda在調用參數過多過少的時候都將報error,這是lambda跟Proc的一個區別之一。

    4、Proc#lambda? 用來判斷某個Proc是否具有lambda語義或者block語義:
    lambda{}.lambda?  #=>true
    proc{}.lambda# =>false
    Proc.new{}.lambda# =>false



    主站蜘蛛池模板: 91九色老熟女免费资源站| baoyu122.永久免费视频| 亚洲午夜无码毛片av久久京东热| va天堂va亚洲va影视中文字幕| 国产AV旡码专区亚洲AV苍井空| 亚洲免费无码在线| 最近2019免费中文字幕6| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 亚洲中文无韩国r级电影| 亚洲VA成无码人在线观看天堂| 久久久亚洲欧洲日产国码aⅴ| 色噜噜亚洲男人的天堂| 青青青国产在线观看免费网站| 免费少妇a级毛片| 亚洲国产高清在线精品一区| 一级成人毛片免费观看| 久久国产精品成人片免费| 亚洲综合视频在线观看| 少妇性饥渴无码A区免费 | 无码专区永久免费AV网站| 国产精品亚洲成在人线| 亚洲av中文无码乱人伦在线观看| 日韩精品久久久久久免费| 亚洲午夜爱爱香蕉片| 国产午夜不卡AV免费| 亚洲成人黄色网址| 国产又粗又长又硬免费视频| 亚洲黄色在线观看视频| 十八禁视频在线观看免费无码无遮挡骂过 | 国产片AV片永久免费观看| 在线亚洲高清揄拍自拍一品区| 日本高清免费中文字幕不卡| 亚洲精品国产福利片| 免费特级黄毛片在线成人观看| 成人免费视频一区二区| 在线观看免费大黄网站| 亚洲一卡二卡三卡| www视频免费看| 亚洲AV无码一区二区三区鸳鸯影院| 国产在线观看麻豆91精品免费| 久久亚洲精品无码AV红樱桃|