2011-09-19 23 views
6

Jaka jest preferowana metoda drukowania wielowymiarowej tablicy w ruby?Jak wydrukować wielowymiarową tablicę w ruby?

Na przykład załóżmy, że mam ten 2D tablicy:

x = [ [1, 2, 3], [4, 5, 6]] 

staram się go wydrukować:

>> print x 
123456 

także to, co nie działa:

>> puts x 
1 
2 
3 
4 
5 
6 
+0

Och, myślałem, że chodziło ci o siatkę. Nieważne. –

Odpowiedz

12

Jeśli szukasz po prostu debugowania, który jest łatwy do odczytania, "p" jest przydatna (to wymaga wglądu() na tablicy)

p x 
[[1, 2, 3], [4, 5, 6]] 
1

iteracyjnego każdy wpis w tablicy "otaczającej". Każdy wpis w tej tablicy jest kolejną tablicą, więc także iteruj nad nią. Wydrukować. Lub użyj join.

arr = [[1, 2, 3], [4, 5, 6]] 

arr.each do |inner| 
    inner.each do |n| 
    print n # Or "#{n} " if you want spaces. 
    end 
    puts 
end 

arr.each do |inner| 
    puts inner.join(" ") # Or empty string if you don't want spaces. 
end 
7

Albo:

p x 

-lub-

require 'pp' 

. . .   

pp x 
+0

+1 za wzmiankę o "pp", o której istnieniu nawet nie wiedziałem. Wydaje się, że robi to samo, co sprawdza ten przykład na Rubim 1.9.2. – spike

4

PrettyPrint , Która pochodzi z Ruby, zrobi to za ciebie:

require 'pp' 
x = [ [1, 2, 3], [4, 5, 6]] 
pp x 

Jednak wyjście w Ruby 1.9.2 (który należy spróbować użyć, jeśli to możliwe) robi to automatycznie:

ruby-1.9.2-p290 :001 > x = [ [1, 2, 3], [4, 5, 6]] 
=> [[1, 2, 3], [4, 5, 6]] 
ruby-1.9.2-p290 :002 > p x 
[[1, 2, 3], [4, 5, 6]] 
=> [[1, 2, 3], [4, 5, 6]] 
2

„fundamentalne” sposób to zrobić, i sposób, w jaki robi to IRB, jest drukowanie wyjściu #inspect:

ruby-1.9.2-p290 :001 > x = [ [1, 2, 3], [4, 5, 6]] 
=> [[1, 2, 3], [4, 5, 6]] 
ruby-1.9.2-p290 :002 > x.inspect 
=> "[[1, 2, 3], [4, 5, 6]]" 

pp produkuje nieco ładniejszy wyjście, jednak.

5

Jeśli chcesz wziąć wielowymiarową tablicę i przedstawić go jako wizualnej reprezentacji dwuwymiarowym wykresie, to działa dobrze:

x.each do |r| 
    puts r.each { |p| p }.join(" ") 
end 

Następnie skończyć z czymś takim w terminalu:

1 2 3 
    4 5 6 
    7 8 9 
+0

jaki jest pożytek z '.map {| p | p} '?! – muichkine

+0

dzięki za notatkę. możesz zrobić każdą zamiast mapy. Zmienię próbkę, aby użyć każdej z nich, ponieważ jest bardziej odpowiednia do tego celu. – ogoldberg

Powiązane problemy