![]() |
1
312
如果您使用的是Rails,这里有一个更好的方法: params。 symbolize_keys 结束。 如果你不是,只需剽窃他们的代码(链接中也有):
|
![]() |
2
292
在里面 Ruby>=2.5 ( docs
使用旧的Ruby版本?下面是一个单行程序,它将散列复制到一个新的散列中,其中的键用符号表示:
具有 轨道
|
![]() |
3
115
对于Ruby中YAML的特定情况,如果键以'
require 'yaml' require 'pp' yaml_str = " connections: - host: host1.example.com port: 10000 - host: host2.example.com port: 20000 " yaml_sym = " :connections: - :host: host1.example.com :port: 10000 - :host: host2.example.com :port: 20000 " pp yaml_str = YAML.load(yaml_str) puts yaml_str.keys.first.class pp yaml_sym = YAML.load(yaml_sym) puts yaml_sym.keys.first.class 输出: # /opt/ruby-1.8.6-p287/bin/ruby ~/test.rb {"connections"=> [{"port"=>10000, "host"=>"host1.example.com"}, {"port"=>20000, "host"=>"host2.example.com"}]} String {:connections=> [{:port=>10000, :host=>"host1.example.com"}, {:port=>20000, :host=>"host2.example.com"}]} Symbol |
![]() |
4
64
|
![]() |
5
63
另见: http://api.rubyonrails.org/classes/ActiveSupport/HashWithIndifferentAccess.html 或者您可以使用令人敬畏的“Ruby的Facets”Gem,它包含对Ruby核心和标准库类的大量扩展。
|
![]() |
6
57
自从
|
![]() |
7
32
http://api.rubyonrails.org/classes/Hash.html#method-i-symbolize_keys
|
![]() |
8
27
|
![]() |
9
24
如果您使用的是json,并且希望将其用作哈希,那么在core Ruby中,您可以这样做:
象征你的名字 :如果设置为true,则返回JSON对象中名称(键)的符号。否则返回字符串。字符串是默认值。 |
![]() |
10
21
我真的很喜欢它 Mash 宝石
|
![]() |
11
13
|
![]() |
12
12
在Rails中,您可以使用:
|
![]() |
13
11
|
![]() |
14
8
这里有很多答案,但rails函数的一个方法是
|
![]() |
15
8
这是我的一行嵌套哈希
|
![]() |
16
7
万一
原因
|
![]() |
17
5
你可以偷懒,把它包在一个袋子里
要做到这一点,你可以使用
init块将根据需要转换密钥一次,但如果在访问符号版本后更新密钥的字符串版本的值,符号版本将不会更新。
您还可以让init块不更新散列,这将保护您免受此类错误的影响,但您仍然容易受到相反的影响-更新符号版本不会更新字符串版本:
|
![]() |
18
4
你想做以下工作吗?
它会复制散列,但大多数时候你不会在意。可能有一种方法可以做到这一点,而无需复制所有数据。 |
![]() |
19
4
较短的单衬里fwiw:
|
![]() |
20
3
|
![]() |
21
3
这是为使用
|
![]() |
22
2
我们要更改的数组。字符串=[“HTML”、“CSS”、“JavaScript”、“Python”、“Ruby”] 将一个新变量设为空数组,这样我们就可以“.push”符号。符号=[] strings.each{x | symbols.push(x.intern)} 代码结束。
符号更快,因为它们在代码中节省了更多内存,并且您只能使用它们一次。符号是散列中最常用的键,这很好。我不是最好的ruby程序员,但这种代码形式对我帮助很大。如果有人知道更好的方法,请分享,你也可以使用这种方法进行哈希! |
![]() |
23
2
|
![]() |
24
2
心理 3.0您可以添加 symbolize_names: 选项
注意:如果你的心理版本低于3.0
我的Ubuntu 18.04包含了ruby 2.5.1p57的开箱即用功能 |
![]() |
25
1
|
![]() |
26
1
这并不完全是一行,但它将所有字符串键转换为符号,也包括嵌套键:
|
![]() |
27
1
当我不使用Rails时,我喜欢这个单行程序,因为这样我就不必在处理数据时进行第二次哈希并保存两组数据:
散列#delete返回已删除密钥的值 |
![]() |
28
1
Facets' Hash#deep_rekey 也是一个不错的选择,尤其是:
样本:
|
![]() |
29
1
在ruby中,我发现这是将哈希中的字符串键转换为符号的最简单、最容易理解的方法:
返回与键关联的值 我们立即将其设置为符号化键。 |
![]() |
30
1
与以前的解决方案类似,但编写方式略有不同。
|
![]() |
sana ch · 将数据从hashmap获取到highcharts 7 年前 |
![]() |
Dennis Lipponen · 循环HashMap[重复] 7 年前 |
![]() |
Brian · 在LinkedHashMap中的最后一个对象中访问方法 7 年前 |
![]() |
fawad · 使用Pojo作为映射中的键无法找到键Java 8 7 年前 |
![]() |
rb612 · 哈希表在相同或冲突值上是如何线性的? 7 年前 |