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

Mr_watermelon · September 30, 2016 · Last by Mr_watermelon replied at September 30, 2016 · 1759 hits

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

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

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

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

1 Floor has deleted
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
You need to Sign in before reply, if you don't have an account, please Sign up first.