加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby实例变量范围问题

发布时间:2020-12-16 22:59:00 所属栏目:百科 来源:网络整理
导读:我来自C和JAVA,其中Scope有全球或本地. 我现在正在学习ruby-on-rails和ruby,有本地,实例和全局.直到现在我才真正听说过这个例子. 有或没有rails,实例变量的理解和用法是什么? Global = Variable across all objects shareInstance = Variable inside of the
我来自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和:某些东西.这是为什么?

因为我使用rails框架,所以我理解实例变量是视图可以访问的东西.

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

解决方法

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()'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读