gpt4 book ai didi

ruby - 什么是本地范围?

转载 作者:数据小太阳 更新时间:2023-10-29 08:34:09 26 4
gpt4 key购买 nike

老实说,我对实例变量和局部变量仍然很困惑,不知道应该使用哪个。

关于不能使用的局部变量,我只知道一个条件是:

class MyClass
def initialize
local_var = 1
@instance_var = 1
end

def show_local_var
local_var
end

def show_instance_var
@instance_var
end
end

显然,MyClass.new.show_instance_var 有效,而 MyClass.new_show_local_var 无效

关于这两种变量的另一件事是, block 似乎共享相同的局部范围,因此可以引用局部变量:

local_var = 1

3.times do
puts local_var
end

区别就这么多了,还有其他的吗?请告诉我

如果有任何关于这方面的文章,那对我来说会很有帮助,

最佳答案

局部变量“就在这里”使用,不能从其他任何地方访问。

class MyClass
def foo
local_var = 2
#I use this to do some sort of calculation
@instance_var = local_var + 34
local_var = 5 * @instance_var
puts local_var
end
# From here, local_var is unaccessible.
end

一旦超出范围(fooend 已通过),local_var 将不再存在并且无法被引用.

实例变量在任何时候都对整个类可用。

class MyClass
def initialize
@instance_var = 0
end

def foo
local_var = 2
#I use this to do some sort of calculation
@instance_var = local_var + 34
end

def some_operation
if @instance_var == 36
@instance_var = 3
else
@instance_var = 1
end
end
end

因此,当您调用 m = MyClass.new 并稍后调用 m.some_operation 时,它使用相同的 @instance_var

当我们这样做时,还有类变量(定义的@@class_var)可以从类的任何实例访问。

我没有专门为您提供的文章,但是一些关于 ruby 变量范围 和关于每种变量类型的独立谷歌搜索应该为您提供所需的所有信息!

关于ruby - 什么是本地范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6966793/

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