Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby attr_reader仅在某些环境中工作_Ruby - Fatal编程技术网

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本身不会这样做,它只打印你明确告诉它要打印的东西。

当你这么说的时候,它看起来很明显。谢谢你。你说的话似乎很明显。谢谢你。你说的话似乎很明显。谢谢你。你说的话似乎很明显。非常感谢。