Ruby &引用;“方便”;创建散列的方法
以下是我到目前为止如何创建哈希(根据Codecademy) 下面是rubymonk新的创建哈希的便捷方法Ruby &引用;“方便”;创建散列的方法,ruby,Ruby,以下是我到目前为止如何创建哈希(根据Codecademy) 下面是rubymonk新的创建哈希的便捷方法 chuck_norris = Hash[:punch, 99, :kick, 98, :stops_bullets_with_hands, true] 第二种技术中的冒号是语法的一部分还是字符串的一部分?如果它们只是字符串的一部分,为什么字符串不加引号呢 第二种技术中的冒号是语法的一部分还是字符串的一部分 :不是散列创建语法的一部分,您可以在第二个示例中看到它,即使用符号作为键打孔、踢腿、
chuck_norris = Hash[:punch, 99, :kick, 98, :stops_bullets_with_hands, true]
第二种技术中的冒号是语法的一部分还是字符串的一部分?如果它们只是字符串的一部分,为什么字符串不加引号呢
第二种技术中的冒号是语法的一部分还是字符串的一部分
:
不是散列创建语法的一部分,您可以在第二个示例中看到它,即使用符号作为键打孔、踢腿、止步、子弹和双手都是Symbol
对象。用于创建哈希对象的方法
Hash[:punch, 99, :kick, 98, :stops_bullets_with_hands, true]
|_________| |________|
(key,value) (key,value)
在第二个示例中,键被视为符号。但您也可以使用string、fixnum等
第二种技术中的冒号是语法的一部分还是字符串的一部分?如果它们只是字符串的一部分,为什么字符串不加引号呢
查看Rubydoc,我们可以看到散列::[]
方法有三种形式:
Hash[ key, value, ... ] → new_hash
Hash[ [ [key, value], ... ] ] → new_hash
Hash[ object ] → new_hash
您的特定示例是第一种情况的一个实例,其中对象列表被解释为键值对。所谓:
Hash[a, b, c, d, e, f]
将配对:
- a=>b
- c=>d
- e=>f
:
语法弄糊涂了,你可以在这里讨论一些主题。总结一下:本例中的:
构造了一个对象
总之:
Hash[:punch, 99, :kick, 98, :stops_bullets_with_hands, true]
可以表示为以下哈希:
{
:punch => 99,
:kick => 98,
:stops_bullets_with_hands => true
}
其中,:打孔
,:踢
和:用手停止子弹
是符号,99
,98
和true
是相应的值
要返回值,只需使用如下Hash#[]
方法:
chuck_norris[:punch] # 99
chuck_norris[:kick] # 98
chuck_norris[:stops_bullets_with_hands] # true
请记住,您可以通过#to_s
方法将符号转换为字符串:
:punch.to_s # "punch"
:kick.to_s # "kick"
:stops_bullets_with_hands.to_s # "stops_bullets_with_hands"
啊-课程中引入了全新的对象类型,没有任何警告!因此,它们不是创建哈希的语法的一部分。我应该把:punch、:kick等看作是整数或字符串。对吗?@Taymon How<代码>散列::[]方法只需要
(键,值)
对,键,值的组合应该是什么对象并不重要。这应该在Rubymonk论坛上。但没有这样的论坛。问题是,他们将符号(带冒号)引入了一堂关于使用新技术创建哈希的基础课。冒号看起来像是新语法的一部分。谢谢你把它清理干净,先生们!它与哈希无关,它确实是一个副本。不知道它们是符号和物体。我现在就去读那篇文章。谢谢
:punch.to_s # "punch"
:kick.to_s # "kick"
:stops_bullets_with_hands.to_s # "stops_bullets_with_hands"