• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            qiezi的學(xué)習(xí)園地

            AS/C/C++/D/Java/JS/Python/Ruby

              C++博客 :: 首頁(yè) :: 新隨筆 ::  ::  :: 管理 ::
            這是ActiveSupport擴(kuò)展的一個(gè)方法。原代碼如下:

            class Symbol
            ? def to_proc
            ??? Proc.new { |*args| args.shift.__send__(self, *args) }
            ? end
            end

            它擴(kuò)展出這種用法:

            (1..5).map(&:to_s)

            map原本是要接受一個(gè)block參數(shù),普通的用法是:

            (1..5).map{|e| e.to_s}

            或者:

            proc = Proc.new{|e| e.to_s}
            (1..5).map(&proc)

            上面這個(gè)(1..5).map(&:to_s)用法可以拆成3步來(lái)解釋:
            sym = :to_s
            proc = Proc.new{|*args| args.shift.send(sym, *args)}
            (1..5).map(&proc)

            有個(gè)疑問(wèn),經(jīng)過(guò)yanping.jia解釋,map(&:to_s)因?yàn)槌霈F(xiàn)了&符號(hào),所以:to_s會(huì)執(zhí)行to_proc方法,然后與&一起合成&proc交給map處理。雖然說(shuō)得通,不過(guò)我總覺(jué)得這個(gè)解釋中,&這個(gè)符號(hào)做了2次工作,是否合理?

            這種用法原本是Ruby Extensions Project發(fā)明的,在RoR中作了點(diǎn)修改。原來(lái)的版本是:

            class Symbol
            ??? def to_proc
            ????? proc { |obj, *args| obj.send(self, *args) }
            ??? end
            end

            它使用2個(gè)參數(shù)來(lái)分出一個(gè)參數(shù),而RoR版本則使用shift分出來(lái)。


            剛才又想了一下,yanping.jia的解釋應(yīng)該是合理的,解釋器看到&:id時(shí),先會(huì)判斷是否是一個(gè)方法調(diào)用,如果是則需要把:id轉(zhuǎn)成一個(gè)proc。否則就是語(yǔ)法錯(cuò)誤了。
            posted on 2006-07-11 15:40 qiezi 閱讀(341) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Ruby
            久久久久人妻一区精品色 | 亚洲午夜久久久久久久久电影网| 久久亚洲国产成人精品无码区| 亚洲国产精品嫩草影院久久| 综合网日日天干夜夜久久| 好久久免费视频高清| 亚洲国产成人精品无码久久久久久综合| 色播久久人人爽人人爽人人片aV| 久久精品免费一区二区| 国产91色综合久久免费分享| 久久久久久久免费视频| 久久影院综合精品| 亚洲国产香蕉人人爽成AV片久久| 久久久久亚洲精品天堂| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 久久综合狠狠综合久久| 精品久久久久久无码中文字幕| 久久九九兔免费精品6| 国产激情久久久久影院小草 | 99麻豆久久久国产精品免费| 亚洲国产精品综合久久一线| 久久精品一区二区国产| 久久人人妻人人爽人人爽| 一级a性色生活片久久无| 精品一久久香蕉国产线看播放| 亚洲精品乱码久久久久66| 国产精品一区二区久久精品涩爱 | 日本精品久久久久影院日本 | 偷窥少妇久久久久久久久| 无码国内精品久久人妻蜜桃 | 免费精品久久久久久中文字幕| 午夜人妻久久久久久久久| 亚洲精品高清一二区久久| 久久99国产精品成人欧美| 99热都是精品久久久久久| 日韩欧美亚洲综合久久影院d3| WWW婷婷AV久久久影片| 精品久久久久久综合日本| 国产精品久久亚洲不卡动漫| 久久91亚洲人成电影网站| 久久精品国产99国产精偷 |