gpt4 book ai didi

ruby - 未定义方法 `ljust' 为 nil :NilClass (NoMethodError)

转载 作者:太空宇宙 更新时间:2023-11-03 17:20:40 26 4
gpt4 key购买 nike

我正在学习 Ruby,最近完成了一项创建目录的作业。该代码有效,但是,在代码末尾,出现以下错误:

table_of_contents2.rb:23:in `<main>': undefined method `ljust' for nil:NilClass (NoMethodError)

我通过在 while 循环中执行 puts outline 仔细检查了 outline 变量不是 nil,并尝试更改 outline 在整个代码中将变量添加到 @outline$outline,但错误仍然存​​在。

完整代码如下:

lineWidth = 40

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

puts "Table of Contents".center lineWidth


outline = []

i = 0

while i < 3
outline.push(chapters[i])
outline.push(pages[i])
i = i + 1
end

j = 0

while j <= outline.length
puts outline[j].ljust(lineWidth/2) +
outline[j+1].rjust(lineWidth/2)
j = j + 2
end

为什么会出现这个错误?为什么代码运行成功后会出现这种情况?

附录:我正在终端中运行代码。当我运行代码时,终端内的完整显示如下:

$ ruby table_of_contents2.rb
Table of Contents
Chapter 1: Numbers page 1
Chapter 2: Letters page 72
Chapter 3: Variables page 118
table_of_contents2.rb:23:in `<main>': undefined method `ljust' for nil:NilClass (NoMethodError)

预先感谢您的帮助!

最佳答案

问题出在 while j <= outline.length 行.

应该是while j < outline.length .

但是,在 Ruby 中,手动维护游标通常被认为是一种不好的做法。您的程序可以重写为

line_width = 40

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

puts "Table of Contents".center line_width

chapters.zip(pages).each do |chapter, page|
puts chapter.ljust(line_width/2) + page.rjust(line_width/2)
end

顺便说一下,R​​uby 程序员更喜欢下划线而不是驼峰式(类名和模块名除外),所以我改成了lineWidthline_width .

关于ruby - 未定义方法 `ljust' 为 nil :NilClass (NoMethodError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44793008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com