当前位置:  开发笔记 > 后端 > 正文

ruby方法名称

如何解决《ruby方法名称》经验,为你挑选了1个好方法。

对于我在ruby中工作的项目,我重写了method_missing方法,以便我可以使用类似于此的方法调用来设置变量,类似于在ActiveRecord对象中设置变量:

Object.variable_name= 'new value'

然而,在实现之后,我发现许多变量名称中都有句点(.).我发现了这个解决方法:

Object.send('variable.name=', 'new value')

但是,我想知道有没有办法逃脱这段时间,以便我可以使用

Object.variable.name= 'new value'



1> Nick Retalla..:

不要这样做!

尝试创建在您的语言中无效的标识符不是一个好主意.如果你真的想设置这样的变量,请使用属性宏:

attr_writer :bar
attr_reader :baz
attr_accessor :foo

好的,既然你已经被警告了,这里是怎么做的.每次获得常规访问器时,只需返回同一个类的另一个实例,并随时收集所需的信息.

class SillySetter
  def initialize path=nil
    @path = path
  end

  def method_missing name,value=nil
    new_path = @path ? "#{@path}.#{name}" : name
    if name.to_s[-1] == ?=
      puts "setting #{new_path} #{value}"
    else
      return self.class.new(path=new_path)
    end
  end
end

s = SillySetter.new
s.foo = 5              # -> setting foo= 5
s.foo.bar.baz = 4      # -> setting foo.bar.baz= 4

我不想鼓励红宝石愚蠢,但我无法自拔!

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有