Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ruby: method to print and neat an array

I am not sure if this question is too silly but I haven't found a way to do it.

Usually to puts an array in a loop I do this

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

However if I have this:

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 

It doesn't work.

Of course I can use something like this

puts Human.current_humans.inspect 

but I want to learn other alternatives!

like image 928
Manza Avatar asked Apr 03 '13 10:04

Manza


People also ask

How do you print an array in Ruby?

Ruby printing array contentsThe array as a parameter to the puts or print method is the simplest way to print the contents of the array. Each element is printed on a separate line. Using the inspect method, the output is more readable. The line prints the string representation of the array to the terminal.

How do I print an array in Ruby on Rails?

You need to use awesome_print gem. Show activity on this post. It depends on what you want to use the array for. However, if you want to iterate through an array, or do things like explode() , you'll be better suited using the Ruby array functions.


1 Answers

You can use the method p. Using p is actually equivalent of using puts + inspect on an object.

humans = %w( foo bar baz )  p humans # => ["foo", "bar", "baz"]  puts humans.inspect # => ["foo", "bar", "baz"] 

But keep in mind p is more a debugging tool, it should not be used for printing records in the normal workflow.

There is also pp (pretty print), but you need to require it first.

require 'pp'  pp %w( foo bar baz ) 

pp works better with complex objects.


As a side note, don't use explicit return

def self.print     return @@current_humans.to_s     end 

should be

def self.print     @@current_humans.to_s     end 

And use 2-chars indentation, not 4.

like image 89
Simone Carletti Avatar answered Sep 22 '22 02:09

Simone Carletti