Пытаясь сделать что-то странное, что может превратиться во что-то более полезное, я попытался определить свой собственный оператор []=
в пользовательском классе, который вы можете сделать, и вернуть ему что-то отличное от аргумента value
, которое видимо, вы не можете этого сделать. []=
Возвращаемое значение оператора всегда value
; даже если вы переопределите этот оператор, вы не сможете контролировать возвращаемое значение.
class Weird
def []=(key, value)
puts "#{key}:#{value}"
return 42
end
end
x = Weird.new
x[:a] = "a"
output "a:a"
return value => "a" # why not 42?
Есть ли у кого-нибудь объяснения? В любом случае?
рубиновая МРТ 1.8.7. Это одно и то же во всех рубинах; Является ли это частью языка?