(对不起,我第一次发布这个代码时应该更清楚了。希望这很有意义)
档案“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?
我得到一个例外,因为“尺寸”是对象不是尺寸规格的,因此它们没有“适合”功能。
答案 0 :(得分:1)
您的设置和ruby安装是否正常?我创建了这3个文件并在“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
$
没有错误!
答案 1 :(得分:0)
在第二次阅读时我有点困惑,你似乎想把这个类混合到模块中,这可能不太可取。 YAML是否应该加载SizeSpecifications的数组?
似乎您没有将模块混合到您的班级中。如果我在irb中运行测试,则require会抛出LoadError。所以我假设你把两个文件放在一起,如果没有转储它。
通常你会在模块中编写功能,然后将它混合到类中。所以你可以像这样修改你的代码:
class SizeSpecification
include SomeModule
def fits?
end
end
然后你可以说:
SizeSpecification::SomeModule.sizes
我想你也应该说:
SizeSpecification.sizes
但是,这需要您从自定义大小方法定义的前缀。
这有帮助吗?
答案 2 :(得分:0)
问题代码让我有点困惑。
一般情况下,对Ruby来说,如果发生这种情况,这是一个好兆头,我试图以错误的方式做事。
最好提出一个与您的实际预期结果相关的问题,而不是针对您的问题的特定“攻击”的具体情况。他们我们可以说'nonono,不要那样做,做这个'或'啊啊,现在我明白你想做什么'