下面的函数定义是什么意思?为什么函数名中有赋值运算符?
def func=(param)
@param = param
end
这是 Ruby 中的 setter 方法。它允许你做model.func = 'some value'
.
这是一个分配方法。它使您能够定义行为类似于赋值的方法:
class C
def value=(value)
@value = value
end
end
c = C.new
c.value = 42
当你写
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=()
。
下面的函数定义是什么意思?
它们在 Ruby中被称为writer方法。
为什么函数名中有赋值运算符?
它在您的语法中添加了糖。
虽然你有一个方法
def func=(param)
@param = param
end
您可以将其称为正常作业
ob.func = 12 # same as obj.func(12)