首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby主类上的实例变量

Ruby主类上的实例变量
EN

Stack Overflow用户
提问于 2014-12-31 13:09:23
回答 1查看 222关注 0票数 1

考虑以下代码:

代码语言:javascript
复制
@name = 'learning metaprogramming!'

def cap
  @name.upcase # Was expecting to require @@name as the scopes are different like in a class
end

cap # => "LEARNING METAPROGRAMMING!"

有人能解释一下,为什么我能够访问@name,我认为它应该是mainclass变量。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-31 13:16:39

@name是一个实例变量,@@name是一个类变量。

当在任何显式类定义之外定义实例变量时,隐式地在Object空间中。

代码语言:javascript
复制
➜  ~  irb
2.1.5 :001 > self.class
 => Object
2.1.5 :002 >

Object是一个对象,或多或少类似于一个自定义对象。因此,当您创建

代码语言:javascript
复制
@name = 'learning metaprogramming!'

实例变量@name存在于Object的作用域中。方法定义发生在相同的范围内,因此可以访问实例变量。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27721613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档