gpt4 book ai didi

Ruby 实例变量作用域问题

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

我来自 C++ 和 JAVA,其中 Scope 要么是全局的,要么是局部的。

我现在正在学习 ruby​​-on-rails,对于 ruby​​,有本地的、实例的和全局的。直到现在我才真正听说过实例。

有无rails,实例变量的理解和用法是怎样的?

Global = Variable across all objects share
Instance = Variable inside of the object
Local = Variable inside of the object

我想我有点把实例和本地混合在一起了。

@ham
ham

这是两个不同的变量吧?有时我对 Rails 感到困惑,因为它们可以互换使用 @something 和 :something 之类的东西。这是为什么?

因为我使用 Rails 框架,所以我只知道实例变量是 View 可以访问的东西。

有人可以澄清这些变量吗?

最佳答案

Ruby 中的实例变量类似于 Java 中的实例变量,是对象状态的一部分:

class MyObject
def set_x(x)
@x = x
end

def get_x
@x
end
end

等效的 Java 代码:

class MyObject {
private Object x;

void setX(Object x) {
this.x = x;
}

Object getX() {
return x;
}
}

局部变量只是一个只能在这个特定方法中访问的变量:

def doIt 
x = 3;
# x not accessible from outside of doIt
puts x
end

void doIt() {
int x = 3;
// same in Java
System.out.println(x);
}

编辑
对象状态是什么意思?

MyObject o = new MyObject();
o.setX(3);
// integer 3 is now stored in variable 'x' of object 'o'
// I can return any time later and get that value back by 'o.getX()'

关于Ruby 实例变量作用域问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3737964/

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