• <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的學習園地

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

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

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

            它擴展出這種用法:

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

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

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

            或者:

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

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

            有個疑問,經(jīng)過yanping.jia解釋,map(&:to_s)因為出現(xiàn)了&符號,所以:to_s會執(zhí)行to_proc方法,然后與&一起合成&proc交給map處理。雖然說得通,不過我總覺得這個解釋中,&這個符號做了2次工作,是否合理?

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

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

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


            剛才又想了一下,yanping.jia的解釋應該是合理的,解釋器看到&:id時,先會判斷是否是一個方法調用,如果是則需要把:id轉成一個proc。否則就是語法錯誤了。
            posted on 2006-07-11 15:40 qiezi 閱讀(348) 評論(0)  編輯 收藏 引用 所屬分類: Ruby
            亚洲精品无码成人片久久| 一级做a爰片久久毛片人呢| 亚洲va国产va天堂va久久| 色综合久久久久久久久五月| 91视频国产91久久久| 久久综合九色欧美综合狠狠| 一本久久知道综合久久| 国内精品久久久久久久coent| 亚洲AV无码成人网站久久精品大| 国产精品9999久久久久| 亚洲国产一成久久精品国产成人综合 | 久久精品无码免费不卡| 久久精品综合网| 日本一区精品久久久久影院| 一本久久免费视频| 一本一道久久精品综合| 久久久亚洲欧洲日产国码aⅴ | 国产成人综合久久综合 | 久久亚洲精品无码观看不卡| 久久99精品久久久久婷婷| 亚洲?V乱码久久精品蜜桃| 久久久91精品国产一区二区三区| 婷婷久久精品国产| 久久久久亚洲av毛片大| 国産精品久久久久久久| 国产精品久久久久aaaa| 亚洲成色www久久网站夜月| 久久这里只精品99re66| 久久这里的只有是精品23| 伊人久久无码精品中文字幕| 丁香五月综合久久激情| 久久国产精品久久| 色综合久久综精品| 国产亚洲精久久久久久无码AV| 国产人久久人人人人爽| 久久A级毛片免费观看| 亚洲精品无码成人片久久| 亚洲午夜久久久影院伊人| 国产精品久久久久久久久软件 | 国产精品久久网| 久久精品桃花综合|