Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基本Ruby目录对齐_Ruby - Fatal编程技术网

基本Ruby目录对齐

基本Ruby目录对齐,ruby,Ruby,我试图制作一个目录,其中章节位于左侧;相应的页码在右侧对齐 这是我的密码: lineWidth = 60 str = "Table of Contents" puts str.center lineWidth chapters = ["Chapter 1: Numbers", "Chapter 2: Letters", "Chapter 3: Variables"] numbers = ["page: 1", "page: 72", "page: 118"] puts chapters.lj

我试图制作一个目录,其中章节位于左侧;相应的页码在右侧对齐

这是我的密码:

lineWidth = 60
str = "Table of Contents"
puts str.center lineWidth

chapters = ["Chapter 1: Numbers", "Chapter 2: Letters", "Chapter 3: Variables"] 
numbers = ["page: 1", "page: 72", "page: 118"]
puts chapters.ljust(lineWidth/2) + numbers.rjust(lineWidth/2)
有人知道为什么在以下情况下,这会作为错误返回:

# lineWidth = 60
# str = "test"
# puts str.ljust(lineWidth/2) + str.rjust(lineWidth/2)  

我自己也是个新手,但问题是
是一个数组,而
ljust
方法没有为数组定义。 以下代码适用于
章节

chapters.each {|t| puts t.ljust(lineWidth/2)}
numbers.each {|t| puts t.rjust(lineWidth/2)}
对于
编号

chapters.each {|t| puts t.ljust(lineWidth/2)}
numbers.each {|t| puts t.rjust(lineWidth/2)}
问题是你希望每一章都在同一行。我不认为可以将上述技术用于两个单独的阵列

您可以将章节和编号放在同一个数组中,如下所示:

toc = [
       ["Chapter 1: Numbers", "page: 1"],
       ["Chapter 2: Letters", "page: 72"],
       ["Chapter 3: Variables", "page: 118"],
      ]

toc.each do |t|
  puts t[0].ljust(lineWidth/2) + t[1].rjust(lineWidth/2)
end
这还有一个额外的优点,即toc中的每个条目都将章节和页码“打包”在一个数组中,这样可以更轻松地添加更多章节和页码,而不用担心章节中的每个条目与“数字”中的相应条目“匹配”


顺便说一下,您不需要在第三个数组(第3章中的那个数组)后面加上最后一个逗号,但是如果您把它放在那里,ruby可以很好地处理它,并且可以很明显地看出下一行应该是什么样子。否则,当您稍后添加第四个条目时,很容易忘记在第3章数组后添加逗号,这将给您带来一个错误)

似乎是ghufran确定了问题,但请记住下次将您遇到的实际错误包括在内,否则由我们来猜测实际问题是什么,这永远都不好。