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!
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.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With