新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Rails方法send調(diào)用參數(shù)
Rails中有許多方法值得我們在學(xué)習(xí)的過程中去深入探討。那么在這里我們將會為大家奉獻(xiàn)上有關(guān)Rails方法send的相關(guān)應(yīng)用,希望對大家有所幫助。#t#

可以使用send方法來調(diào)用參數(shù)指定的方法:
- name = "Fred"
- puts( name.send( :reverse ) ) #=> derF
- puts( name.send( :upcase ) ) #=> FRED
- name = "Fred" puts( name.send
( :reverse ) ) #=> derF puts
( name.send( :upcase ) ) #=> FRED
盡管文檔規(guī)定Rails方法send必須需要一個方法符號作為參數(shù),但是也可以直接使用一個字符串作為參數(shù),或者,為了保持一致,也可以使用to_sym進(jìn)行方法名稱進(jìn)行相應(yīng)的轉(zhuǎn)換后調(diào)用:
- name = MyString.new( gets() )
# 輸入upcase- methodname = gets().chomp.to_sym
#<= to_sym 并非必需,輸入upcase- puts name.send(methodname) #=>UPCASE
- name = MyString.new( gets() )
# 輸入upcase methodname = gets().chomp.to_sym
#<= to_sym 并非必需,輸入upcase
puts name.send(methodname) #=>UPCASE
下面的這個例子顯示在運行狀態(tài)中通過Rails方法send動態(tài)地執(zhí)行指定的方法:
- class MyString < String
- def initialize( aStr )
- super aStr
- end
- def show
- puts self
- end
- def rev
- puts self.reverse
- end
- end
- print("Enter your name: ") #<= Enter: Fred
- name = MyString.new( gets() )
- print("Enter a method name: " ) #<= Enter: rev
- methodname = gets().chomp.to_sym
- puts( name.send(methodname) ) #=> derF
- class MyString < String def initialize( aStr )
super aStr end def show puts self end def
rev puts self.reverse end end print("Enter
your name: ") #<= Enter: Fred name = MyString
.new( gets() ) print("Enter a method name: " )
#<= Enter: rev methodname = gets().chomp.to_sym
puts( name.send(methodname) ) #=> derF
回憶一下上面使用define_method來創(chuàng)建Rails方法send的例子,傳遞了方法的名稱m,還為要創(chuàng)建的新方法傳遞了一個代碼塊@block
名稱欄目:Rails方法send調(diào)用參數(shù)
網(wǎng)站鏈接:http://www.dlmjj.cn/article/dpioipp.html


咨詢
建站咨詢
