Ruby中print和neat数组的方法?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (12)

我不知道这个问题是不是太傻了,但我还没有找到解决办法。

通常,为了在循环中放置数组:

current_humans = [.....]
current_humans.each do |characteristic|
  puts characteristic
end

但是,如果我有这样的情况:

class Human
  attr_accessor:name,:country,:sex
  @@current_humans = []

  def self.current_humans
    @@current_humans
  end

  def self.print    
    #@@current_humans.each do |characteristic|
    #  puts characteristic
    #end
    return @@current_humans.to_s    
  end

  def initialize(name='',country='',sex='')
    @name    = name
    @country = country
    @sex     = sex

    @@current_humans << self #everytime it is save or initialize it save all the data into an array
    puts "A new human has been instantiated"
  end       
end

jhon = Human.new('Jhon','American','M')
mary = Human.new('Mary','German','F')
puts Human.print

它不起作用。

puts Human.current_humans.inspect

但我想学习其他的!

提问于
用户回答回答于

您可以使用以下方法。使用p实际上相当于使用puts+inspect在物体上。

humans = %w( foo bar baz )

p humans
# => ["foo", "bar", "baz"]

puts humans.inspect
# => ["foo", "bar", "baz"]

但要记住p更多的是一个调试工具。

也有pp

require 'pp'

pp %w( foo bar baz )

pp对于复杂的对象,效果更好。


不要使用显式返回

def self.print  
  return @@current_humans.to_s    
end
def self.print  
  @@current_humans.to_s    
end

使用2字符缩进,而不是4。

扫码关注云+社区