(对不起,我应该在第一次发布此代码时对代码更加清楚。希望这有意义)

文件“ size_specification.rb”

class SizeSpecification
  def fits?     
  end
end

文件“ some_module.rb”

require 'size_specification'

module SomeModule
  def self.sizes
    YAML.load_file(File.dirname(__FILE__) + '/size_specification_data.yml')
  end
end

文件“ size_specification_data.yml

--- 
- !ruby/object:SizeSpecification 
  height: 250
  width: 300

那我打电话的时候

SomeModule.sizes.first.fits?

我得到一个例外,因为“大小”不是Object的SizeSpecification的大小,因此它们没有“适合”的功能。

===============>>#1 票数:1

设置和红宝石安装可以吗? 我创建了这三个文件,并在“ test.rb”中写了以下内容

require 'yaml'
require "some_module"

SomeModule.sizes.first.fits?

然后我运行它。

$ ruby --version
ruby 1.8.6 (2008-06-20 patchlevel 230) [i486-linux]
$ ruby -w test.rb 
$

没有错误!

===============>>#2 票数:0

问题代码使我有些困惑。

通常,在Ruby中,如果发生这种情况,这是一个很好的信号,表明我正在尝试以错误的方式进行操作。

提出一个与您的实际预期结果相关的问题,而不是对您的问题进行特定“攻击”的细节,可能会更好。 他们可以说“ nonono,不要那样做,这样做”或“啊,我现在明白了你想做什么”

===============>>#3 票数:0

在二读时,我有些困惑,您似乎想将类混入模块中,这似乎不太可取。 YAML还应该加载SizeSpecifications的数组吗?

看来您没有将Module混入课堂。 如果我在irb中运行测试,则require会引发LoadError。 因此,我假设您将两个文件放在一起,如果不转储的话。

通常,您需要在模块中编写功能,然后将其混合到类中。 因此您可以这样修改代码:

class SizeSpecification
  include SomeModule
  def fits?     
  end
end

然后,您可以说:

SizeSpecification::SomeModule.sizes

我认为您也应该能够说:

SizeSpecification.sizes

但是,这需要您使self脱离size方法定义的前缀。

有帮助吗?

  ask by Tim Martin translate from so

未解决问题?本站智能推荐:

1回复

需要红宝石宝石中的错误

我正在研究Ruby gem,但遇到一个奇怪的错误。 我以前没有太多麻烦就发布了这个宝石。 我添加了一些方法/重构了一些代码,并希望发布后续版本(从1.1到1.2)。 作为参考,宝石的名称是Intervallum (拉丁语中的单词'interval')。 我遇到了一直困扰我的“需要
3回复

红宝石模块

为什么这会给我以下错误...? 提示:: Designer:Module的未定义方法`message'(NoMethodError)
2回复

红宝石模块中的NoMethodError

谁能告诉我我所缺少的以及为什么我会收到此错误-> 未定义方法“ addition”,用于Add:Module(NoMethodError)
2回复

红宝石模块中“自我”的结果

请忽略大部分代码的含义,并注意“ binding.pry”的位置。 问题来了:我在撬控制台中的“ binding.pry”处键入“ self”,它给出了以下结果: 因此,我的问题是:为什么“自我”的第一个结果是“阶级”? 但是第二个是“模块”吗? 这有什么魔术?
1回复

需要红宝石

我有以下红宝石代码: 我已经安装了gem locationclass,但是它仍然给我错误消息: 有谁知道如何解决这一问题?
2回复

irb会话中需要任意红宝石宝石的红宝石

我已经和Rails玩了一段时间了。 但是现在我正在尝试制造红宝石。 我正在使用红宝石,它为您构建了一个gem模板。 就我而言,它看起来像这样: 在lib目录中,我有一个名为binarytree.rb的文件,其中包含以下内容: 我想要做的是运行一个irb(交互式红宝石外壳)会
1回复

需要红宝石脚本中的订单

我有一个需要3个宝石才能工作的红宝石脚本。 我的脚本开始如下: 现在,有趣的是,上面的代码有效,但是仅当我首先需要httparty时才需要。 如果将其作为第三个依赖项,则会得到以下信息: 'require': cannot load such file -- httparty (
1回复

红宝石中的“ +”

我是红宝石的新手,我正在阅读Progamming Ruby并遵循其示例。 这是传授Inheritance and Messages的代码: 此代码可以正常工作。 但是我发现如果我将KaraokeSong的to_s更改为此(请注意+和"[#@lyrics]"之间没有空格):
2回复

为什么在“脚本/运行程序”前面总是需要“红宝石”?

当我只执行script/runner它给我-bash: script/runner: Permission denied 当我执行sudo script/runner它会给我sudo: script/runner: command not found 它仅在我执行ruby scrip
2回复

了解红宝石模块

我是Ruby的新手,使用Eclipse,DLTK ruby​​插件和Ruby 2.0。 我创建了一个名为AModule.rb的Ruby模块文件,其中包含以下代码: 这是从同一项目中的测试ruby脚本调用的: 在上述代码的第二行中,我in '<main>': unde