为什么Ruby中没有nil到符号的转换?

时间:2016-04-08 09:00:16

标签: ruby

鉴于nil.to_s是一个空字符串'':"".to_s也是一个空字符串,我不禁想知道为什么nil.to_sym会出错。我认为nil.to_sym会给出一个空符号:"",这似乎是合乎逻辑的。我错过了什么,或者这可能是NilClass的有用插入扩展名吗?

1 个答案:

答案 0 :(得分:2)

直到最近,与字符串不同,符号不能被垃圾收集,因此人们必须更加小心地从一些随机对象生成符号。在预定库存时使用符号;它不应该被用来表达一系列开放的物体。

最近,引入了符号垃圾收集,但您仍然不需要nil.to_sym;如果您的目的只是安全地应用符号类的实例方法,那么您不需要首先将其转换为符号,因为您可以使用安全导航操作符。

foo&.some_symbol_method