我以为可以尝试@i和self.i交替使用,但它给出了一个错误:
class Animal
def initialize i
@i = i
end
def get_i
self.i
end
end
a = Animal.new("Sparky")
puts a.get_i()
Run Code Online (Sandbox Code Playgroud)
输出:
source_file.rb:8:in `get_i':
undefined method `i' for #<Animal:0x000000010d5330 @i="Sparky">
(NoMethodError)
from source_file.rb:12:in `<main>'
Run Code Online (Sandbox Code Playgroud)
解释器处理代码的方式是否有所不同?
spi*_*ann 11
当然,betwenn self.i和之间有一个区别@i:
@i将返回分配给变量的值@i。self.i将返回由名为的方法返回的值i。您的Animal类没有i定义方法,因此错误消息是正确的。
当您想self.i返回@i变量的值时,您需要创建一个i这样的方法
def i
@i
end
Run Code Online (Sandbox Code Playgroud)
或attr_reader像这样简单地使用宏:
class Animal
attr_reader :i
#...
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |