当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


Ruby ENV.update用法及代码示例

本文简要介绍ruby语言中 ENV.update 的用法。

用法

update(hash) → ENV
update(hash) { |name, env_val, hash_val| block } → ENV
merge!(hash) → ENV
merge!(hash) { |name, env_val, hash_val| block } → ENV

ENV.update ENV.merge! 的别名。

将给定 hash 中的每个键/值对添加到 ENV ;返回 ENV:

ENV.replace('foo' => '0', 'bar' => '1')
ENV.merge!('baz' => '2', 'bat' => '3') # => {"bar"=>"1", "bat"=>"3", "baz"=>"2", "foo"=>"0"}

删除 nil 的哈希值的 ENV 条目:

ENV.merge!('baz' => nil, 'bat' => nil) # => {"bar"=>"1", "foo"=>"0"}

对于 already-existing 名称,如果没有给出块,则覆盖 ENV 值:

ENV.merge!('foo' => '4') # => {"bar"=>"1", "foo"=>"4"}

对于already-existing 名称,如果给出块,则产生名称、其 ENV 值及其哈希值;块的返回值成为新名称:

ENV.merge!('foo' => '5') { |name, env_val, hash_val | env_val + hash_val } # => {"bar"=>"1", "foo"=>"45"}

如果名称或值无效,则引发异常(请参阅无效名称和值);

ENV.replace('foo' => '0', 'bar' => '1')
ENV.merge!('foo' => '6', :bar => '7', 'baz' => '9') # Raises TypeError (no implicit conversion of Symbol into String)
ENV # => {"bar"=>"1", "foo"=>"6"}
ENV.merge!('foo' => '7', 'bar' => 8, 'baz' => '9') # Raises TypeError (no implicit conversion of Integer into String)
ENV # => {"bar"=>"1", "foo"=>"7"}

如果块返回无效名称,则引发异常:(请参阅无效名称和值):

ENV.merge!('bat' => '8', 'foo' => '9') { |name, env_val, hash_val | 10 } # Raises TypeError (no implicit conversion of Integer into String)
ENV # => {"bar"=>"1", "bat"=>"8", "foo"=>"7"}

请注意,对于上述例外情况,无效名称或值之前的哈希对将正常处理;以下内容被忽略。

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 ENV.update。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。