2011-05-18 54 views
1

我已經在Ruby教程創建了下面的代碼作爲鍛鍊; Tibial的一部分,我想:與ljust/rjust /中心紅寶石陣列

title = ['Chapter 1: Numbers','Chapter 2: Letters','Chapter 3: Variables'] 
pages = ['Page 1','page 72','page 118'] 

linewidth = 40 
header = '*Table of Contents*' 

puts header.center linewidth 
puts 
puts ((title[0]).ljust linewidth/2) + ((pages[0]).rjust linewidth/2) 
puts ((title[1]).ljust linewidth/2) + ((pages[1]).rjust linewidth/2) 
puts ((title[2]).ljust linewidth/2) + ((pages[2]).rjust linewidth/2) 

我的問題是可以在上面進行無明確哪部分做要顯示的數組?也就是說,我可以在一個代碼中按順序列出數組中的所有標題和所有頁面嗎?如果是這樣怎麼辦?

回答

2

可以輸出列表如下:

titles.each_with_index do |title,index| 
    puts title.ljust(linewidth/2) + (b[index] ? b[index].rjust(linewidth/2) : nil) 
end 
2

如何:

>> title = ['Chapter 1: Numbers','Chapter 2: Letters','Chapter 3: Variables'] 
#=> ["Chapter 1: Numbers", "Chapter 2: Letters", "Chapter 3: Variables"] 
>> pages = ['Page 1','page 72','page 118'] 
#=> ["Page 1", "page 72", "page 118"] 
>> 
.. linewidth = 40 #=> 40 
>> header = '*Table of Contents*' 
#=> "*Table of Contents*" 
>> center = linewidth/2 
#=> 20 
>> puts header.center linewidth #=> nil 
      *Table of Contents*   
>> puts 
#=> nil 
>> title.zip(pages) do |t, p| 
..  puts "#{t.ljust(center)} #{p.ljust(center)}" 
.. end 
Chapter 1: Numbers Page 1    
Chapter 2: Letters page 72    
Chapter 3: Variables page 118 
#=> nil   
2

titlespages平行陣列Array.zip擅長處理並行陣列:

title.zip(pages).each do |title, pages| 
    puts (title.ljust linewidth/2) + (pages.rjust linewidth/2) 
end 
+0

很好,謝謝。並行數組和'.zip'並不是我在本教程中已經涉及的東西,但看起來像是一個更好的解決方案。 – AndyNico 2011-05-18 14:58:03

+0

@AppSlap,不客氣,並感謝您的複選標記。 – 2011-05-18 16:29:01