gpt4 book ai didi

Ruby 变量的可见性

转载 作者:数据小太阳 更新时间:2023-10-29 07:23:56 25 4
gpt4 key购买 nike

如果我在 Ruby 中声明 @var,该类的每个对象都会有自己的 @var

但是如果我错过了 @ 怎么办?我的意思是,我声明了一个名为 var2 的变量,但没有使用 @。他们共享变量还是临时创建的?

最佳答案

当变量声明时没有作用域前缀(@ - 实例,@@ - 类或$ - 全局)然后声明为当前范围,即:

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

关于Ruby 变量的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15123868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com