• <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
            久久这里只有精品视频99| 久久综合精品国产二区无码| 精品久久久久久国产91| 国产精品久久波多野结衣| 99久久精品免费观看国产| 久久久噜噜噜久久| 性做久久久久久久久| 久久久久亚洲精品无码蜜桃 | 久久久久女人精品毛片| 狠狠干狠狠久久| 久久人人爽人人爽人人片AV不 | 久久精品国产99国产电影网| 亚洲人成无码www久久久| 99久久免费国产特黄| 久久笫一福利免费导航 | 国产91久久综合| 人妻无码精品久久亚瑟影视 | 国内精品久久久久久久久电影网 | 一本久久精品一区二区| 亚洲精品国产成人99久久| 亚洲精品无码成人片久久| 少妇被又大又粗又爽毛片久久黑人 | 性高朝久久久久久久久久| 狠狠色丁香久久综合五月| 久久大香萑太香蕉av| 久久se这里只有精品| 91久久成人免费| 久久99国产亚洲高清观看首页| 无码久久精品国产亚洲Av影片| 久久综合久久性久99毛片| 国产真实乱对白精彩久久| 久久综合久久综合九色| AV无码久久久久不卡蜜桃| 狠狠久久亚洲欧美专区| 免费一级欧美大片久久网| 亚洲精品无码久久久久去q | 久久精品无码午夜福利理论片| 久久综合日本熟妇| 久久青青草原亚洲av无码| 91麻豆精品国产91久久久久久 | 亚洲精品无码久久一线|