我试图在我的一个类中将数组的数组定义为常量,代码如下所示:
Constant = [[1,2,3,4],
[5,6,7,8]]
当我在 irb 中加载类(class)时,我得到:
NoMethodError: undefined method `[]' for nil:NilClass
我尝试使用 %w,所做的只是将每个都变成一个字符串,所以我得到了“[1,2,3,4]”而不是 [1,2,3,4]
如何将数组的数组定义为常量?
我使用的是 ruby 1.8.7。
当我在 IRB 中定义常量时它很好,但是当我用它加载类时出现错误。
require 'file_with_class.rb'
NoMethodError: undefined method `[]' for nil:NilClass
from ./trainbbcode/tags.rb:2
from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require'
from (irb):1
该文件看起来像这样:
class TBBC
Tags = [[/\[b\](.*?)\[\/b\]/,'<strong>\1</strong>',@config[:strong_enabled]],
...
[/\[th\](.*?)\[\/th\]/,'<th>\1</th>',@config[:table_enabled]]]
最佳答案
您显示的代码工作正常。您肯定不会收到该特定行的错误消息。错误是在别处引起的。
是的,%w
创建了一个字符串数组。要创建普通数组,请像您一样使用 []
。
既然您已经展示了真实的代码,现在就进行编辑:
@config
在您使用它的范围内是 nil
,因此当您执行 @config[:strong_enabled]
时会出现异常.
请注意,在类定义内部但在任何方法定义外部 @foo
指的是类对象的实例变量,而不是任何特定实例的实例变量(因为它指的是哪个?当常量被初始化时,甚至还没有任何实例。
关于ruby - 将数组的数组定义为常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3175607/