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))#=>derFputs
(name.send(:upcase))#=>FRED
尽管文档规定Rails方法send必须需要一个方法符号作为参数,但是也可以直接使用一个字符串作为参数,或者,为了保持一致,也可以使用to_sym进行方法名称进行相应的转换后调用:
- name=MyString.new(gets())
#输入upcase- methodname=gets().chomp.to_sym
#<=to_sym并非必需,输入upcase- putsname.send(methodname)#=>UPCASE
- name=MyString.new(gets())
#输入upcasemethodname=gets().chomp.to_sym
#<=to_sym并非必需,输入upcase
putsname.send(methodname)#=>UPCASE
下面的这个例子显示在运行状态中通过Rails方法send动态地执行指定的方法:
- classMyString<String
- definitialize(aStr)
- superaStr
- end
- defshow
- putsself
- end
- defrev
- putsself.reverse
- end
- end
- print("Enteryourname:")#<=Enter:Fred
- name=MyString.new(gets())
- print("Enteramethodname:")#<=Enter:rev
- methodname=gets().chomp.to_sym
- puts(name.send(methodname))#=>derF
- classMyString<Stringdefinitialize(aStr)
superaStrenddefshowputsselfenddef
revputsself.reverseendendprint("Enter
yourname:")#<=Enter:Fredname=MyString
.new(gets())print("Enteramethodname:")
#<=Enter:revmethodname=gets().chomp.to_sym
puts(name.send(methodname))#=>derF
回忆一下上面使用define_method来创建Rails方法send的例子,传递了方法的名称m,还为要创建的新方法传递了一个代码块@block
转载请说明出处
知优网 » Rails方法send调用参数
知优网 » Rails方法send调用参数