gpt4 book ai didi

ruby - 为什么我自己的模块和方法从 IRB 得到 NoMethodError

转载 作者:数据小太阳 更新时间:2023-10-29 08:06:15 27 4
gpt4 key购买 nike

我从 Ruby Cookbook 中完全采用了这个示例。对我来说不幸的是,就像那本书中的很多例子一样,这个例子不起作用:

我的文件(Find.rb - 保存在本地和 Ruby\bin):

require 'find'

module Find
def match(*paths)
matched=[]
find(*paths) { |path| matched << path if yield path }
return matched
end
module_function :match
end

我试着从IRB这样调用它,根据书中提供的例子:

irb(main):002:0> require 'Find'
=> false

irb(main):003:0> Find.match("./") { |p| ext = p[-4...p.size]; ext && ext.downcase == "mp3" }

它应该返回我的递归目录中的 mp3 文件列表。相反,它这样做:

NoMethodError: undefined method `match' for Find:Module
from (irb):3
from C:/Ruby192/bin/irb:12:in `<main>'

什么给了?我是这方面的新手(尽管我必须说我在 Python 方面走得更远,而且做得更好!)。

如何让 IRB 使用我的方法?

最佳答案

我在运行 Snow Leopard 的 Mac 上使用 irb 时遇到了这个问题,同时使用了随 OS X 安装的默认版本的 ruby​​(当然还有 irb)。我能够通过在加载模块后将模块包含在 IRB 中来解决这个问题或者在模块定义之后的文件中。

include module_name

我不确定这是缺陷还是已知行为。

关于ruby - 为什么我自己的模块和方法从 IRB 得到 NoMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4044297/

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