class Human  # Problem received from Raul Romero
  attr_reader :name 
  
  def initialize(name)
  end
 
end

gilles = Human.new("gilles") 
anna = Human.new("gilles") 

puts anna.equal?(gilles) #should output true # 
puts anna + gilles # should output annagilles

如何使最后一行代码输出年鉴?

推荐答案

好的,你可能需要做几件事来完成你的Human级课程:

class Human  # Problem received from Raul Romero
  attr_reader :name 
  
  def initialize(name)
    @name = name
  end
end

您需要设置实例变量@name才能读取它.

接下来,您的puts anna.equal?(gilles)判断将不起作用,因为.equal?判断您是否在处理相同的对象."a".equal("a") #=> false也是如此,因此在您的情况下,只有anna.equal?(anna)将返回TRUE.

那么puts anna + gilles应该不起作用,因为您试图将两个实例(而不是它们的名称)相加.因此,这也许会奏效:

gilles = Human.new("gilles") 
anna = Human.new("anna") # note that you have 'gilles' here in your example
puts anna.name + gilles.name #=> 'annagilles'

因此,为了获得传递给初始化器的值(然后将其设置为@name),您需要使用.name调用该值,即some_human.name

Ruby相关问答推荐

使用 RSpec 测试嵌套哈希时随机排序数组的匹配

当我在 Ruby 中围绕最后一个字符拆分时,如何拆分字符串?

Ruby - 将两个哈希与一些相似的键合并

将 pp 的结果(或输出到控制台的任何内容)放入字符串

Ruby 中的yield关键字有什么作用?

为什么 slurping文件不是一个好习惯?

如何期望 RSpec should_receive 的一些(但不是全部)参数?

模块中的实例变量?

比较ruby中的两个字符串

如何强制 Ruby 显示完整的堆栈跟踪?

在 ruby​​ 中将每个数组元素添加到文件的行中

如何使用 Ruby 2.3 中引入的 Array#dig 和 Hash#dig?

如何通过匹配文本来 Select node

在不同的换行符上拆分

如何在 ruby​​ 中进行命名捕获

如何在 Mac OS X Lion 中安装 Ruby 1.9.3?

是什么让 Ruby 变慢了?

运行 Ruby 命令时,PATH 中不安全的世界可写目录 /Users/username,模式 040777

如何在 macOS 上卸载 rbenv?

为什么compass watch说它无法加载 sass/script/node (LoadError)?