За именем функции следует оператор присваивания
Что означает следующее определение функции? Почему в имени функции есть оператор присваивания?
def func=(param)
@param = param
end
4 ответа
Что означает следующее определение функции?
Они называются метод писателя в Ruby.
Почему в имени функции есть оператор присваивания?
Это добавляет сахара в ваш синтаксис.
Пока у вас есть метод как
def func=(param)
@param = param
end
Вы можете назвать это как обычное задание
ob.func = 12 # same as obj.func(12)
Это метод установки в Ruby. Это позволяет вам делать 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=()
называется.