我对Ruby很新,并且总是假设这两个符号是插入实例变量的相同方式,直到我注意到下面的示例代码中'vendor'参数的不同之处.
class Component
def initialize(name, version)
@vendor = "vendor"
@name = name
@version = version
puts "#{@vendor}-@#{name}-@#{version}"
end
end
ConfiguredComponent.new("param1", "param2")
Run Code Online (Sandbox Code Playgroud)
=>这个有效
class Component
def initialize(name, version)
@vendor = "vendor"
@name = name
@version = version
puts "@#{vendor}-@#{name}-@#{version}"
end
end
ConfiguredComponent.new("param1", "param2")
Run Code Online (Sandbox Code Playgroud)
=>使用@#vendor}表示法不起作用=> :'initialize':未定义的局部变量或方法`vendor'for#(NameError)
class Component
def initialize(name, version)
@vendor = "vendor"
@name = name
@version = version
puts "#{@vendor}-#{@name}-#{@version}"
end
end
Component.new("param1", "param2")
Run Code Online (Sandbox Code Playgroud)
=>这也有效