在编写Ruby模块(一组Sinatra应用程序的辅助方法)时,我遇到了一些奇怪的事情.我将哈希声明为常量,键为字符串.后来,当我尝试检索一个值时,我得到零.在检查哈希时,我发现密钥已经转换为符号.这是怎么回事?
这是一个简化的例子:
module HelperModule
RANGES = {
'a' => 1...60,
'b' => 60...90,
'c' => 90..999
}.freeze
def find_range(key)
RANGES[key] # Returns nil when key is 'a', 'b' or 'c'
end
end
Run Code Online (Sandbox Code Playgroud)
检查RANGES产量:{:a=>[1...60], :b=>[60...90], :c=>[90..999]}.
我可以通过转换键轻松地解决它.to_sym,但我想了解这里发生了什么.