Ruby变量的可见性
发布时间:2020-12-17 03:54:54 所属栏目:百科 来源:网络整理
导读:如果我在 Ruby中声明@var,那个类的每个对象都有自己的@var. 但如果我想念@怎么办?我的意思是,我声明了一个名为var2的变量而没有@.他们共享变量还是暂时创建的? 解决方法 当声明变量没有作用域前缀(@ – instance,@@ – class或$ – global)时,则声明当前作
如果我在
Ruby中声明@var,那个类的每个对象都有自己的@var.
但如果我想念@怎么办?我的意思是,我声明了一个名为var2的变量而没有@.他们共享变量还是暂时创建的? 解决方法
当声明变量没有作用域前缀(@ – instance,@@ – class或$ – global)时,则声明当前作用域,即:
class Foo def boo @boo ||= 'some value' var ||= 40 puts "boo: #@boo var: #{var}" end def foo var ||= 50 puts "boo: #@boo var: #{var}" end end c = Foo.new c.boo # => boo: some value var: 40 c.foo # => boo: some value var: 50 def foo $var ||= 30 puts "$var: #$var" end foo # => $var: 30 puts "$var: #$var" # => $var: 30 %w[some words].each do |word| lol = word # blocks introduce new scope end puts lol # => NameError: undefined local variable or method `lol' for word in %w[some words] lol = word # but for loop not end puts lol # => words (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |