- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在学习 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
顺便说一下,Ruby 程序员更喜欢下划线而不是驼峰式(类名和模块名除外),所以我改成了lineWidth
至 line_width
.
关于ruby - 未定义方法 `ljust' 为 nil :NilClass (NoMethodError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44793008/
我正在学习 python,我正在尝试在一些示例文本的每一行前面添加 2 **。但是,当我在每个元素上调用 ljust(2,'*') 时,它不会更改原始字符串。我想用这个旧字符串替换新元素,但是如何呢?
Python str 提供了 3 种可用来进行文本对齐的方法,分别是 ljust()、rjust() 和 center() 方法,本节就来一一介绍它们的用法。 Python ljust()方法
我正在使用 Django 创建一个足球队记录站点,我有一个带有 CSS 等的“漂亮”显示,但作为备份/旧学校版本,我试图让代码将信息写入一个基本的 .使用 rjust、ljust 等格式化文本的 ht
"test".ljust(5) => "test " ["test", "test", "test"].each { |i| i.ljust(5) } => ["test", "test", "tes
我需要左对齐 &str在 rust 。 在 Python 中,我会这样做: f"{spam}: {eggs}".ljust(curses.COLS - 1) 我怎样才能在 Rust 中惯用地做到这一点
我正在学习 Ruby,最近完成了一项创建目录的作业。该代码有效,但是,在代码末尾,出现以下错误: table_of_contents2.rb:23:in `': undefined method `l
我已经创建了以下代码作为我正在尝试的 Ruby 教程中练习的一部分: title = ['Chapter 1: Numbers','Chapter 2: Letters','Chapter 3: Va
我有一些代码: line_width = 26 ch3 = "Chapter 3: Letters page 13" puts(ch3.ljust(line_width/2) + ch3.rjust(
我正在学习嵌套,我的任务是让每一行都以缩进开头。这是我的代码,但它不起作用 $nestingDepth = 0 def logger description, &block puts "Beg
所以我正在学习 Chris Pine 的在线教程,并且我坚持使用这个程序。我正在做我觉得正是教程中教授的内容? 这是程序 toc = [[1, "Reflections"], [2, "Glasgow
我是一名优秀的程序员,十分优秀!