从数组中取出名称并在每个名称后添加换行符

Nea*_*alR 3 ruby arrays ruby-on-rails ruby-on-rails-3

下面是我为一小段 Ruby 代码编写的单元测试。

subject { AutoShop.new 'Mr. Fix It', 'WA987654321', Employee.new('Sue', 'Owner', 0) }

it '#employee_list returns list of employee names' do
  # setup
  input = [Employee.new('Lou', 'Receptionist', 90_000)]
  subject.append_employees input
  subject.employee_list.should eq "Sue\nLou"
end
Run Code Online (Sandbox Code Playgroud)

这是该类的代码。但是,我无法让名称在该employee_list方法中正确显示。我是 Ruby 的新手,所以任何建议将不胜感激。

class AutoShop < Business

    attr_accessor :employees

  def initialize(name, tax_id, employee)
    super(name, tax_id)
    @employees = []
    @employees << employee
  end   

  def append_employees(input)
    input.map { |x| @employees << x  }  
  end

  def employee_list
    @employees.map {|x| x.name}
  end   

end     
Run Code Online (Sandbox Code Playgroud)

Mic*_*ski 5

您的employee_list方法基于您的单元测试,应该输出由换行符分隔的每个名称\n。因此,添加 a.join("\n")以从数组中生成一个字符串。

def employee_list
  @employees.map {|x| x.name }.join("\n")
end  
Run Code Online (Sandbox Code Playgroud)

.map可以使用“pretzel-colon”简写来完成:

@employees.map(&:name).join("\n")
Run Code Online (Sandbox Code Playgroud)