2015-03-31 66 views
0

我试图在一行上打印几个数组。第一行是确定的,但是之后的循环会崩溃。我试过了一遍,但没有雪茄。下面的代码:在一行中打印多个阵列

chapter_num = ['Chapter 1', 'Chapter 2', 'Chapter 3'] 
chapter_title = ['Numbers', 'Letters', 'Variables'] 
chapter_page = ['page 1', 'page 72', 'page 118'] 

#Prints chapter number 
chapter_num.each do |num| 
    print (num.ljust 0) 

    #Prints title 
    chapter_title.each do |title| 
      print (title.center 14) 

      #Prints page number 
      chapter_page.each do |page| 
        puts (page.rjust 40) 
      end 
    end 
end 

当我运行上面的代码,它看起来是这样的:

Chapter 1 Numbers          page 1 
          page 72 
          page 118 
    Letters          page 1 
          page 72 
          page 118 
    Variables          page 1 
          page 72 
          page 118 
Chapter 2 Numbers          page 1 
          page 72 
          page 118 
    Letters          page 1 
          page 72 
          page 118 
    Variables          page 1 
          page 72 
          page 118 
Chapter 3 Numbers          page 1 
          page 72 
          page 118 
    Letters          page 1 
          page 72 
          page 118 
Variables          page 1 
          page 72 
          page 118 

它想成这样:

Chapter 1 Numbers          page 1 
Chapter 2 Letters          page 72 
Chapter 3 Variables         page 118 

回答

2

你可以使用Array::zip方法这里:

chapter_num = ['Chapter 1', 'Chapter 2', 'Chapter 3'] 
chapter_title = ['Numbers', 'Letters', 'Variables'] 
chapter_page = ['page 1', 'page 72', 'page 118'] 

arr = chapter_num.zip(chapter_title, chapter_page) 
arr.each { |el| puts "#{el[0].ljust 0} #{el[1].center 14} #{el[2].rjust 40}" } 

#=> Chapter 1 Numbers          page 1 
#=> Chapter 2 Letters          page 72 
#=> Chapter 3 Variables         page 118 

而且 - 因为Array::zip需要一个可选块 - 您可以d在一行中完成:

chapter_num.zip(chapter_title, chapter_page).each { |el| puts "#{el[0].ljust 0} #{el[1].center 14} #{el[2].rjust 40}" } 
1

在你的代码有三个嵌套这就是获得输出的原因。你只需要拥有一个循环打印的您的阵列中的每个这样的第i个元素:

chapter_num = ['Chapter 1', 'Chapter 2', 'Chapter 3'] 
chapter_title = ['Numbers', 'Letters', 'Variables'] 
chapter_page = ['page 1', 'page 72', 'page 118'] 

#Prints chapter number 
(0..chapter_num.length-1).each do |i| 
    puts "#{chapter_num[i].ljust 0} #{chapter_title[i].center 14} #{chapter_page[i].rjust 40}" 
end 

打印出:

Chapter 1 Numbers          page 1 
Chapter 2 Letters          page 72 
Chapter 3 Variables         page 118