Ruby attr_reader仅在某些环境中工作
这也适用于Ruby attr_reader仅在某些环境中工作,ruby,Ruby,这也适用于attr\u writer和attr\u accessor 我最近一直在玩一些简单的Ruby代码,但以下代码片段并不适用于我运行过的所有环境: class Human attr_reader :name def initialize(name) @name = name end end hank = Human.new("Hank") hank.name 这应该输出“Hank”,它在我的命令行irb中执行。在Textmate2和AptanaStudio 3中,运
attr\u writer
和attr\u accessor
我最近一直在玩一些简单的Ruby代码,但以下代码片段并不适用于我运行过的所有环境:
class Human
attr_reader :name
def initialize(name)
@name = name
end
end
hank = Human.new("Hank")
hank.name
这应该输出“Hank”,它在我的命令行irb中执行。在Textmate2和AptanaStudio 3中,运行此代码时没有输出任何内容。如果我明确定义了读卡器,这三种方法都能正常工作:
def name
puts @name
end
当我在Aptana终端和我通常的终端中播放时,请键入:
$ ruby -v
它们似乎都使用相同的版本:ruby 2.0.0p451。发生了什么事?attr\u reader只是没有做你认为它能做的事情 试一试 而不是
hank.name
您将看到输出。irb是一种特殊情况,它显示最后执行的语句的返回值。ruby本身不会这样做,它只打印您明确告诉它要打印的内容。attr\u reader不会做您认为它会做的事情 试一试 而不是
hank.name
您将看到输出。irb是一种特殊情况,它显示最后执行的语句的返回值。ruby本身不会这样做,它只打印您明确告诉它要打印的内容。attr\u reader不会做您认为它会做的事情 试一试 而不是
hank.name
您将看到输出。irb是一种特殊情况,它显示最后执行的语句的返回值。ruby本身不会这样做,它只打印您明确告诉它要打印的内容。attr\u reader不会做您认为它会做的事情 试一试 而不是
hank.name
您将看到输出。irb是一种特殊情况,它显示最后执行的语句的返回值。ruby本身不会这样做,它只打印你明确告诉它要打印的东西。当你这么说的时候,它看起来很明显。谢谢你。你说的话似乎很明显。谢谢你。你说的话似乎很明显。谢谢你。你说的话似乎很明显。非常感谢。