2009-11-28 4 views
0

У меня есть вопрос новичка! Я хочу сделать что-то вроде этого:Как распечатать содержимое класса?

puts Example.new([a,b,c]) 

и результат будет

=> a,b,c 

Я пытался что-то вроде этого:

class Example 
    attr_accessor :something 
    def initialize(something) 
    @something = something 
    puts @something 
    end 
end 

Это работает, но не так, как я хочу! Спасибо!

+0

.. но не так, как я этого хочу .. Вы имеете в виду, что вы хотите, чтобы имена переменных печатались вместо их значений? – miku

+0

№. Я хочу, чтобы переменные напечатаны, но делая непосредственно «ставит Example.new (variable1, variable2, variable3) я хочу что-то вроде этого, но я не знаю, как это сделать:. класс Пример attr_accessor: что-то Def инициализации (что-то) @something = что-то конца защиту something_else @something = @ something.to_s + "х" конца конца ставит Example.new (что-то) и эта вещь, чтобы вернуть "somethingx" –

ответ

5

Будет что-то вроде этой работы?

class Example 
    def initialize(args = []) 
    @args = args 
    end 

    def to_s 
    @args.join(",") 
    end 
end 

puts Example.new([1,2,3]) 
>> 1,2,3 
+0

отлично! Спасибо! –

5

Вы хотите распечатать (в читаемой форме) объект? Попробуйте использовать inspect method.

class Myobj 
    attr_accessor :x, :y, :z 
end 

a = Myobj.new 
a.x = 1; a.y = 2; a.z = 3 
a.inspect #=> "#<Myobj:0x1bc48950 @y=2, @x=1, @z=3>" 
+0

Спасибо для ответа! Я не хочу писать a = Myobj.new. Я хочу, чтобы прямо ставил Myobj.new (x, y, z) и получал напечатано x, y, z Спасибо –

Смежные вопросы