新手问题 关于以=结尾的方法

Mr_watermelon · 2016年09月30日 · 最后由 Mr_watermelon 回复于 2016年09月30日 · 1768 次阅读

刚刚从 python 转到 ruby,好多问题不清楚啊!!

def age= (value) age = value puts age return age*2 end

age = 5 #为什么没有输出?不是已经执行该方法了吗?

puts age= 5 #为什么输出为 5 而不是为 10?

1 楼 已删除
class A
  def age=(value)
    puts "A age=\n"
  end
end
a = A.new
a.age = 2 # "A age="

def age= (value)
  puts "age="
end
age = 5
puts age # 5, age is local variable
self.age=5

age=5 其实只定义了一个局部变量

#2 楼 @Roland.Xu 谢谢您!不过我还有点不太明白,当定义了 age= (不是在类里面)这个方法后,age= 5 只是定义了一个局部变量,那要怎样才能执行定义的 age= 这个方法呢?

#2 楼 @Roland.Xu 不好意思 我刚刚运行您的代码 发现最后一条语句就是执行了定义的方法 再次谢谢您😁

https://ruby-china.org/topics/24631 这有关于方法后加‘=’的讨论,可以参考下

send(:age=, 3) # 3
p send(:age=, 3) # 3 6
需要 登录 后方可回复, 如果你还没有账号请 注册新账号