我正在学习编码课,并在尝试与教师一起编写代码时遇到了问题。我正在尝试学习关于mixins和Enumerable模块的部分,并制作了这个文件,就像讲师一样,但它不适合我。我安装了Ruby,并且到目前为止已成功使用RVM来管理Ruby和Rails版本,所以我不明白为什么这对我不起作用。任何帮助都将非常感激。
以下是我在终端中收到的错误的屏幕截图:
这是我的示例代码:
# Enumerable as a mixin
class ToToList
include 'Enumerable'
attr_accessor :items, :finished_items
def initialize
@items = []
end
def each
items.each {|item| yield item}
end
end
# list = ToToList.new
# list.items = ['laundry', 'dishes', 'vacuum']
# list.items.select {|i| i.length > 6}
答案 0 :(得分:1)
我发现了问题。显然,在较新版本的Ruby中(我目前正在使用Ruby v.2.1.2 p95),include
语句中围绕Enumerable的单引号使其无法正常工作。在ruby-docs处使用手册后,我看到了此代码示例:include Enumerable
并注意到它周围没有单引号。所以我删除了单引号,它现在工作正常。
答案 1 :(得分:0)
require
将在to_do_list.rb
上查找名为$LOAD_PATH
的文件。如果您有一些git repo并且这是您项目的工作目录,那么很可能它不会出现在您的$LOAD_PATH
上。通常$LOAD_PATH
通常只有标准库。
您可以使用require
将完整(绝对)路径传递给to_do_list.rb
文件,或使用require_relative
并将相对于当前位置的路径传递给所述文件(无论你从哪里调用irb
。