函数名称后跟赋值运算符

时间:2014-06-26 05:41:21

标签: ruby attr-accessor

以下功能定义是什么意思?为什么函数名中有赋值运算符?

def func=(param)
  @param = param
end

4 个答案:

答案 0 :(得分:2)

这是Ruby中的setter方法。它允许您执行model.func = 'some value'

答案 1 :(得分:1)

  

以下功能定义是什么意思?

它们在Ruby中被称为 writer 方法。

  

为什么函数名中有赋值运算符?

在语法中添加 sugar

虽然你有一个方法

def func=(param)
  @param = param
end

您可以将其称为正常作业

ob.func = 12 # same as obj.func(12)

答案 2 :(得分:1)

这是Assignment Method。它使您能够定义行为类似于赋值的方法:

class C
  def value=(value)
    @value = value
  end
end

c = C.new
c.value = 42

答案 3 :(得分:1)

写作时

class Check
  attr_accessor :c_equals
  def c_equals=(some value)
    @c_equals = some_value
  end
  def c_equals
    @c_equals
  end
end

c = Check.new
c.c_equals = 'Hello World'
c.c_equals

通过该方法执行赋值操作时,将调用带有等号的方法名称。您可以在上面的示例中看到,当您致电c.c_equals="hello world"时,系统会调用函数c_equals=()