<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      ruby中的class_eval

      最近幾天在做一個ruby作業的時候遇到了一些問題,題目是這樣要求的

      class Class
        def attr_accessor_with_history(attr_name)
          attr_name = attr_name.to_s
          attr_reader attr_name
          attr_reader attr_name + "_history"
          
          class_eval %Q{ }
        end
      end
       
      class Foo
        attr_accessor_with_history :bar
        attr_accessor_with_history :baw
      end
      

        

       
      要求自己寫一個訪問器屬性,可以記錄下來該屬性所描述的類中數據成員的所有歷史值(原諒我對ruby從沒有系統學習過,所以只有用自己在c++或者c#中知道的術語來描述)。
       
      由于是在編譯階段就自動生成相應方法,所以這里就用了class_eval 函數。
       
      盡管對語言不熟悉,但是我還是在一開始初步形成思路,也就是在class_eval 中添加一個方法模板,使得每個有該屬性attr_accessor_with_history (或者說關鍵字?)的屬性的類都自動的生成一個相關的setter,在setter中進行對歷史值列表的維護。
       
      想起來固然簡單,但是由于對ruby的符號和元編程都毫無了解,實際開始操作的時候就發現了其中有很多沒辦法忽視的問題。
       
      第一,我應該如何在class_eval 的字符串參數中訪問到只知道變量名字字符串的變量?
      經過一番學習之后,了解到了在編譯階段,會自動的將#{str}替換成str對應的變量,知道了這些,就方便了很多。
      至少了解到該如何define這個setter的模板。
            def #{attr_name}=(value)      
            end
      

        

       
      第二,在這個參數內部如何訪問類的成員又成了一個問題,尤其是訪問成員的歷史值數組。
      經過多次嘗試,以及對手冊又多次理解,發現這個問題其實跟上一個是相同的,由于#{str}只是一種格式,其中的str是任何返回值為字符串的表達式都可以自動替換成相應變量。
      所以就簡單的寫了一個if就搞定了。
              if #{attr_name} == nil then       
                @#{(attr_name + "_history")} = Array.new
                @#{(attr_name + "_history")}.push(nil)
              end
       
              @#{attr_name} = value
              @#{(attr_name + "_history")}.push(value)    
      

        

      posted on 2012-03-05 17:19  fingerpass  閱讀(818)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 熟女人妻视频| 视频一区视频二区卡通动漫| 亚洲av永久无码精品网站| 四虎库影成人在线播放| 天天爽夜夜爽人人爽曰| 国产成人亚洲综合91精品| 久久综合色一综合色88| 2019国产精品青青草原| 亚洲成av人片天堂网无码| 东方四虎av在线观看| 欧美日韩国产图片区一区| 五月丁香六月综合缴情在线| 久久精品国产亚洲av麻豆长发| 久久99久国产精品66| 国产稚嫩高中生呻吟激情在线视频| 夜夜添狠狠添高潮出水| 日韩人妻无码精品久久| 2020久久国产综合精品swag| 亚洲青青草视频在线播放| 蜜芽久久人人超碰爱香蕉| 国产精品午夜福利合集| 色综合激情丁香七月色综合| 亚洲码国产精品高潮在线| 色婷婷av久久久久久久| 亚洲AV成人片不卡无码| 男女xx00上下抽搐动态图| 亚洲sm另类一区二区三区| 中文字幕国产日韩精品| 亚洲欧美卡通另类丝袜美腿| 日韩精品亚洲专在线电影| 久久综合激情网| 国产老熟女狂叫对白| 国产馆在线精品极品粉嫩| 久久av高潮av喷水av无码| 日韩一区二区三区精彩视频| 伊人色综合一区二区三区影院视频 | www国产无套内射com| av天堂亚洲天堂亚洲天堂| 欧美成人aaa片一区国产精品| 国产极品粉嫩尤物一区二区| 国产成人啪精品午夜网站|