使用没有 => 的哈希时,没有将 nil 隐式转换为 String

詹姆斯·马修

我的程序可以很好地处理这个哈希

hash = 
    {
    'keyone'=> 'valueone',
    'keytwo'=> 'valuetwo',
    'keythree'=> 'valuethree'
    }

但有人指出这个符号很旧,现在我应该使用:

  hash = 
        {
        'keyone': 'valueone',
        'keytwo': 'valuetwo',
        'keythree': 'valuethree'
        }

我收到此错误:

no implicit conversion of nil into String (TypeError)

我只更改了哈希符号。有人可以解释发生了什么吗?

熊类

在后者中,您的键被保存为符号。因此,您应该将它们称为:

hash[:keyone]

如果符号很好,那就更好了

hash = {
  keyone: 'valueone',
  keytwo: 'valuetwo',
  keythree: 'valuethree'
}

但是,如果您需要字符串键,则必须坚持使用“旧”语法

hash = {
  'keyone' => 'valueone',
  'keytwo' => 'valuetwo',
  'keythree' => 'valuethree'
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

没有将nil隐式转换为String错误

eRuby - 在 if 语句中比较数字时没有将 nil 隐式转换为 String

TypeError:没有使用gsub将nil隐式转换为String

Rails 使用多个数据库 - 没有将 nil 隐式转换为 String

类型错误:没有将 nil 隐式转换为 String

TypeError(没有将nil隐式转换为String),仅在生产中

无法更新Calabash-sandbox Ruby“没有将nil隐式转换为String”

全新安装的 Ruby 错误(没有将 nil 隐式转换为 String)

TypeError:没有将nil隐式转换为String。utils.rb:24:in'quote_ident'

TypeError(没有将nil隐式转换为String)生产环境上的Rails devise-jwt gem

没有将HTTParty :: Response隐式转换为String

没有将Array隐式转换为String吗?

没有将Hash隐式转换为String(TypeError)

没有将String隐式转换为Integer(TypeError)

没有将 ActiveSupport::HashWithIndifferentAccess 隐式转换为 String?

+:没有将Integer隐式转换为String(TypeError)

没有使用ruby将nil隐式转换为整数

ROR +无法将数据存储在数据库中(TypeError异常:没有将nil隐式转换为String)

创建新记录时,我没有将 Symbol 隐式转换为 String

TypeError:关联时没有将String隐式转换为Integer

heroku toolbelt`initialize':没有将nil隐式转换为Hash(TypeError)

控制器规格.reload错误:没有将nil隐式转换为Hash

JSON在Ruby中没有将String隐式转换为Integer

TypeError:没有将Capybara :: ElementNotFound隐式转换为String

Ruby-TypeError:没有将Hash隐式转换为String

Ruby错误-'+':没有将Fixnum隐式转换为String(TypeError)

Ruby on Rails:`没有将String隐式转换为Integer以获取json字段

ruby-json没有将String隐式转换为Integer(TypeError)

Ruby错误:“没有将Fixnum隐式转换为String”