Rails方法send調用參數
作者:佚名
Rails方法send一般情況下都是被我們用來調用參數指定的方法。不過在執行之前我們必須要一個方法符號作為參數。
Rails中有許多方法值得我們在學習的過程中去深入探討。那么在這里我們將會為大家奉獻上有關Rails方法send的相關應用,希望對大家有所幫助。#t#
可以使用send方法來調用參數指定的方法:
- name = "Fred"
- puts( name.send( :reverse ) ) #=> derF
- puts( name.send( :upcase ) ) #=> FRED
- name = "Fred" puts( name.send
( :reverse ) ) #=> derF puts
( name.send( :upcase ) ) #=> FRED
盡管文檔規定Rails方法send必須需要一個方法符號作為參數,但是也可以直接使用一個字符串作為參數,或者,為了保持一致,也可以使用to_sym進行方法名稱進行相應的轉換后調用:
- 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
下面的這個例子顯示在運行狀態中通過Rails方法send動態地執行指定的方法:
- 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來創建Rails方法send的例子,傳遞了方法的名稱m,還為要創建的新方法傳遞了一個代碼塊@block
責任編輯:曹凱
來源:
博客園