0

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

def func=(param)
  @param = param
end
4

4 回答 4

2

这是 Ruby 中的 setter 方法。它允许你做model.func = 'some value'.

于 2014-06-26T05:43:19.690 回答
1

这是一个分配方法。它使您能够定义行为类似于赋值的方法:

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

c = C.new
c.value = 42
于 2014-06-26T05:45:21.137 回答
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=()

于 2014-06-26T05:47:55.267 回答
1

下面的函数定义是什么意思?

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

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

它在您的语法中添加了糖。

虽然你有一个方法

def func=(param)
  @param = param
end

您可以将其称为正常作业

ob.func = 12 # same as obj.func(12)
于 2014-06-26T05:42:56.370 回答