Rails方法send一般情况下都是被我们用来调用参数指定的方法。不过在执行之前我们必须要一个方法符号作为参数。

Rails中有许多方法值得我们在学习的过程中去深入探讨。那么在这里我们将会为大家奉献上有关Rails方法send的相关应用,希望对大家有所帮助。#t#

Rails方法send调用参数  Rails方法send 第1张

可以使用send方法来调用参数指定的方法:

  1. name="Fred"
  2. puts(name.send(:reverse))#=>derF
  3. puts(name.send(:upcase))#=>FRED
  4. name="Fred"puts(name.send
    (:reverse))#=
    >derFputs
    (name.send(:upcase))#=
    >FRED

尽管文档规定Rails方法send必须需要一个方法符号作为参数,但是也可以直接使用一个字符串作为参数,或者,为了保持一致,也可以使用to_sym进行方法名称进行相应的转换后调用:

  1. name=MyString.new(gets())
    #输入upcase
  2. methodname=gets().chomp.to_sym
    #
    <=to_sym并非必需,输入upcase
  3. putsname.send(methodname)#=>UPCASE
  4. name=MyString.new(gets())
    #输入upcase
    methodname=gets().chomp.to_sym
    #
    <=to_sym并非必需,输入upcase
    putsname.send(methodname)#=
    >UPCASE

下面的这个例子显示在运行状态中通过Rails方法send动态地执行指定的方法:

  1. classMyString<String
  2. definitialize(aStr)
  3. superaStr
  4. end
  5. defshow
  6. putsself
  7. end
  8. defrev
  9. putsself.reverse
  10. end
  11. end
  12. print("Enteryourname:")#<=Enter:Fred
  13. name=MyString.new(gets())
  14. print("Enteramethodname:")#<=Enter:rev
  15. methodname=gets().chomp.to_sym
  16. puts(name.send(methodname))#=>derF
  17. 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调用参数

发表评论

您需要后才能发表评论