黄色国产视频,男女啪啪18禁无遮挡激烈,久草热8精品视频在线观看,四虎国产精品永久在线下载

            ruby聲明式語法的實現代碼

            時間:2022-06-24 14:20:04 聲明范文 我要投稿
            • 相關推薦

            ruby聲明式語法的實現代碼

              在ActiveRecord可以用很方便的聲明方式來定義model之間的關聯關系,例如:

              class Topic < ActiveRecord::Base

              has_many :posts

              belongs_to :user

              end

              has_many和belongs_to其實是Topic類的class method,標準寫法是:

              class Topic < ActiveRecord::Base

              Topic.has_many(:posts)

              Topic.belongs_to(:user)

              end

              那么has_many可以給我們帶來什么呢?類方法has_many在被執行的時候,給Topic的對象實例添加了一系列方法:posts, posts<<, orders.push......等等。所以當我們在model里面聲明has_many,belongs_to等對象關系的時候,一系列相關的對象方法就被自動添加進來了。 讓我們來自己試試看吧:

              復制代碼 代碼如下:

              module M

              def self.included(c)

              c.extend(G)

              end

              module G

              def generate_method(*args)

              args.each do |method_name|

              define_method(method_name) { puts method_name }

              end

              end

              end

              end

              class C

              include M

              generate_method :method1, :method2

              end

              c = C.new

              c.method1

              c.method2

              我們定義了一個聲明generate_method,可以接受多個symbol,來動態的創建同名的方法。現在我們在類C里面使用這個聲明:generate_method :method1, :method2,當然我們需要include模塊M。為什么ActiveRecord的model不需要include相關的模塊呢?當然是因為Topic的父類ActiveRecord::Base已經include了模塊Associations了。

              類C通過include模塊M,調用了模塊M的一個included回調接口,讓類C去extend模塊G,換句話來說就是,通過include模塊M,來給類C動態添加一個類方法generate_method。

              這個generate_method被定義在模塊G當中,它接受一系列參數,來動態創建相關的方法。于是我們就實現了這樣的DSL功能:

              通過在類C里面聲明generate_method :method1, :method2,讓類C動態的添加了兩個實例方法method1,method2,是不是很有意思? 實際上rails的對象關聯聲明也是以同樣的方式實現的。

            【ruby聲明式語法的實現代碼】相關文章:

            js鍵盤操作實現div的移動或改變的原理及代碼07-04

            廣告編程代碼06-26

            員工的聲明10-13

            [精選]承諾的聲明11-08

            承諾的聲明01-23

            道歉的聲明03-19

            聲明的公告01-04

            公司的聲明05-12

            道歉的聲明【精選】08-01

            版權的聲明04-11

            主站蜘蛛池模板: 欧美欧洲成本大片免费| 日本免费色| 91激情视频在线播放| 无码动漫性爽xo视频在线观看| 久久人人爽人人爽人人片亞洲 | 中文字幕精品亚洲无线码二区| 成人黄页网站| 日韩一区综合| 久草黄色| 337p日本欧洲亚洲大胆精品555588| 99国产精品久久久久久久日本竹| 黄色av大片在线观看| 亚洲性视屏| 九九热免费视频在线观看| 久久国产免费观看精品a片| 97se亚洲国产综合自在线| 欧美激情一区二区三区在线观看| 黄色一级片免费播放| 国产精品无码无需播放器| 男女免费观看在线爽爽爽视频| www,日韩| 日韩簧片| 日本一区二区在线看| 日韩在线视频线观看一区| 在线看片无码永久免费视频| 超碰碰碰| 日韩高清一区| 日日爱av| 久久亚洲精品无码播放| 波多野结衣一区二区免费视频| 成人字幕网zmw| 日韩在观看线| 污污的视频免费| 亚洲嫩模喷白浆在线观看| 亚洲中文字幕av无码区| 99视频免费在线观看| 欧洲色av| 精品一区乱| 337P日本欧洲亚洲大胆精品| 精品久久一区二区乱码| 乱子伦一区二区三区|