2012-06-27 5 views
0

나는 SpecialArray라는 클래스를 만들었으며 어떤 종류의 출력을 표시할지 사용자 지정하고 싶습니다. 내가 "풋"을 사용하는 경우, IRB 그냥 객체를 반환,특정 irb 동작을 이끌어내는 클래스 사용자 정의

1.9.3p194 :051 > test_array 
=> [1, 2, 0, 6, 11] 

그리고 : 나는 인스턴스 변수, test_array를 작성하고 SpecialArray를 사용하여 배열을 생성하고, 내가 IRB에 "test_array"를 입력하면,이 얻을 과 같이 :

1.9.3p194 :054 > puts test_array 
#<SpecialArray:0x007ff05d0b4960>   

하지만 난 단지 "입력 test_array 첫 번째 예처럼 더 IRB없이 행동을 가지고 싶습니다. (나는 한 줄의 배열을 반환하고 싶습니다 예) 나는 시도 내 자신의, 그러나 많은 성공하지 않고 기본 puts 메서드를 재정의하십시오.이 작업을 수행하는 방법에 대한 제안?

+1

를 묻는 메시지가 수도가 이전 질문한다. 'p'와 디폴트 IRB의 동작과는 달리,'puts'는 객체의 to_s 메소드를 호출하여 문자열 표현을 얻습니다. 수업 시간에 좋아하는 방식으로 수업을 재정의하십시오. 그리고 StackOverflow에서 좋은 들여 쓰기가 필요한 것은 4 칸입니다. 더 이상은 아니지만 덜합니다. –

+0

그것이'SpecialArray # to_s'가 반환하는 것이기 때문입니다. 더 좋은 결과를 얻으려면이를 재정의해야합니다. –

답변

0

Test_array는 객체이므로 puts를 객체에 직접 호출하면 일반적으로 인스턴스가 반환됩니다. 당신은 당신의 박았 방법에 다음 사용해야

은 :

puts test_array.to_s