• <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參數,普通的用法是:

            (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)

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

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

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

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


            剛才又想了一下,yanping.jia的解釋應該是合理的,解釋器看到&:id時,先會判斷是否是一個方法調用,如果是則需要把:id轉成一個proc。否則就是語法錯誤了。
            posted on 2006-07-11 15:40 qiezi 閱讀(336) 評論(0)  編輯 收藏 引用 所屬分類: Ruby
            久久高潮一级毛片免费| 久久se精品一区二区| 久久久久久久久久久| 日本强好片久久久久久AAA| 72种姿势欧美久久久久大黄蕉| 99久久精品国产综合一区| 午夜精品久久久久久影视riav| 亚洲AV日韩AV天堂久久| 久久福利片| 久久精品毛片免费观看| 伊人热热久久原色播放www| 国产精品国色综合久久| 日韩欧美亚洲国产精品字幕久久久| 亚洲va国产va天堂va久久| 久久综合一区二区无码| 99热成人精品热久久669| 久久精品卫校国产小美女| 99久久99久久精品国产片果冻| 99精品国产综合久久久久五月天| 国产精品综合久久第一页| 成人久久综合网| 漂亮人妻被黑人久久精品| 久久午夜福利无码1000合集| 精品国产一区二区三区久久蜜臀| 久久久久久人妻无码| 亚洲综合伊人久久综合| 亚洲人成电影网站久久| 青青草原综合久久大伊人导航 | 国产精品久久久天天影视香蕉| A级毛片无码久久精品免费| 人妻少妇精品久久| 久久亚洲国产成人精品无码区| 欧美精品一区二区精品久久| 久久精品国产99国产电影网| 精品久久久久久无码中文字幕一区| 狠狠色丁香久久婷婷综合| 伊人久久综合精品无码AV专区| 无码任你躁久久久久久老妇App| 伊人久久大香线蕉无码麻豆| 色欲综合久久躁天天躁| 久久综合视频网|