ruby - 将数组的数组定义为常量

标签 ruby

我试图在我的一个类中将数组的数组定义为常量,代码如下所示:

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/

相关文章:

ruby-on-rails - 无方法错误 : undefined method 'user' for nil:NilClass

用于查找评论的 Ruby 正则表达式?

ruby - 如何在 Ruby 中的其他正则表达式中嵌入正则表达式

ruby - 所以我不能模拟用 C 实现的方法

ruby-on-rails - 如果第一个对象数量 == 0,则删除下一个对象中的数量

ruby - 在 RVM 安装 1.9.3 期间运行配置时出错

mysql - ruby on rails 不正确的默认套接字是/var/run/mysqld/mysqld.sock

ruby - 通过操作而不是分配来绕过写入器访问器

Ruby 获取数组的字节大小

java - 关于“分配分支条件”的值范围