莊周夢(mèng)蝶

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

          Ruby Tip:定義索引操作符

          Posted on 2010-02-01 16:29 dennis 閱讀(1056) 評(píng)論(2)  編輯  收藏 所屬分類: 動(dòng)態(tài)語言
              怎么讓你對(duì)象跟Array或者Hash一樣,可以使用[ ]操作符來獲取屬性值或者賦值? 問題其實(shí)就是如何定義index操作符,在Ruby中可以這樣做:

          class Message
             def initialize
              @props
          =Hash.new
             end
             def [](key)
                @props[key]
             end
             
             def []
          =(key,value)
                @props[key]
          =value
             end 
          end

          m
          =Message.new

          m[
          0]=1
          p m[
          0]

          m[:a]
          ="hello"
          p m[:a]

                  注意方法簽名。


          評(píng)論

          # re: Ruby Tip:定義索引操作符  回復(fù)  更多評(píng)論   

          2010-02-02 00:08 by Kai Chen
          Actually, you can write these logic more simple with ActiveSupport:

          @@@
          class Message
          attr_accessor :props
          def initialize
          @props = Hash.new
          end
          delegate '[]', '[]=', :to => :props
          end

          msg = Message.new #=> #<Message:0x103f99530 @props={}>
          msg[:id] = 1
          msg[:id] #=> 1
          @@@

          Kinda cool, right?

          Rdoc: http://api.rubyonrails.org/classes/Module.html#M000110

          # re: Ruby Tip:定義索引操作符  回復(fù)  更多評(píng)論   

          2010-02-02 09:18 by dennis
          @Kai Chen
          yeath,it's really cool.
          主站蜘蛛池模板: 云林县| 柞水县| 万载县| 富宁县| 黔江区| 运城市| 江津市| 措勤县| 齐河县| 安康市| 广平县| 神农架林区| 绩溪县| 安化县| 深圳市| 南安市| 九江县| 蒙城县| 阿城市| 平顺县| 五家渠市| 抚宁县| 玛曲县| 蕉岭县| 延吉市| 府谷县| 光山县| 龙江县| 东源县| 古交市| 上林县| 西宁市| 天镇县| 兖州市| 永清县| 扬州市| 济南市| 上杭县| 河南省| 远安县| 固始县|