首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >散列中不存在键的自定义消息

散列中不存在键的自定义消息
EN

Stack Overflow用户
提问于 2011-01-31 20:02:21
回答 4查看 192关注 0票数 3

根据定义,当键不存在时,ruby散列返回nil。但我需要使用自定义消息来代替nil。所以我使用的是这样的东西:

代码语言:javascript
复制
val = h['key'].nil? ? "No element present" : h['key']

但这有一个严重的缺点。如果键被赋值为nil,那么在这种情况下也会返回"No element present“。

有没有办法完美地做到这一点呢?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-31 20:10:27

用这种方式初始化你的哈希:

代码语言:javascript
复制
> hash = Hash.new{|hash,key| hash[key] = "No element against #{key}"}
 => {}
> hash['a']
 => "No element against a" 
> hash['a'] = 123
 => 123 
> hash['a'] 
 => 123 
> hash['b'] = nil
 => nil 
> hash['b']
 => nil 

希望这能有所帮助:)

票数 -2
EN

Stack Overflow用户

发布于 2011-01-31 20:09:26

代码语言:javascript
复制
irb(main):001:0> h = Hash.new('No element present')
=> {}
irb(main):002:0> h[1]
=> "No element present"
irb(main):003:0> h[1] = nil
=> nil
irb(main):004:0> h[1]
=> nil
irb(main):005:0> h[2]
=> "No element present"
票数 3
EN

Stack Overflow用户

发布于 2011-01-31 20:09:35

您可以改用has_key?方法

代码语言:javascript
复制
val = h.has_key?('key') ? h['key'] : "No element present"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4850614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档