Ruby не позволит вам определить метод whatever+
, как это было бы с whatever=
- если вам нужно описываемое поведение, вам нужно создать объект "method", определите +
оператор для него и вернуть его из вызова Foo.method
:
class Method
def + (params)
puts params
end
def = (params)
puts params
end
end
class Foo
def + (params)
puts params
end
def method
return Method.new
end
end
Я также переместил оператор =
в объект метода, но это не имеет значения (так какВы можете def method=
) - это просто казалось логичным.И если вам нужно применить это на практике, вам, вероятно, следует сделать Method классом-членом Foo:
class Foo
class Method
end
end
, чтобы вы сохранили свои пространства имен в чистоте.Вы всегда можете использовать Foo::Method
, чтобы попасть в этот класс, когда вам это нужно.
Надеюсь, это поможет!