以下代码不打印任何内容,我期待着 welcomeBack
。请解释。
class Hello
@instanceHello = "welcomeBack"
def printHello
print(@instanceHello)
end
Hello.new().printHello();
end
我刚开始学习 ruby,所以如果问题看起来很愚蠢,请原谅。
最佳答案
如果关于定义方法和设置变量你只能记住一件事,那就是:总是问自己,此时 self
是什么?
class Hello
# This ivar belongs to Hello class object, not instance of Hello.
# `self` is Hello class object.
@instanceHello = "welcomeBack"
def printHello
# Hello#@instanceHello hasn't been assigned a value. It's nil at this point.
# `self` is an instance of Hello class
print @instanceHello
end
def self.printSelfHello
# Now this is Hello.@instanceHello. This is the var that you assigned value to.
# `self` is Hello class object
print @instanceHello
end
end
Hello.new.printHello # >>
Hello.printSelfHello # >> welcomeBack
如果要为 ivar 设置默认值,请在构造函数中执行:
class Hello
def initialize
@instanceHello = "welcomeBack"
end
def printHello
print @instanceHello
end
end
Hello.new.printHello # >> welcomeBack
关于ruby - 实例变量声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14033009/