Hash オブジェクトに nil をセットするのはOKらしい。


$ uname -m -r -s -v
Darwin 10.6.0 Darwin Kernel Version 10.6.0: Wed Nov 10 18:13:17 PST 2010; root:xnu-1504.9.26~3/RELEASE_I386 i386
 
$ ruby -v
ruby 1.8.7 (2010-12-23 patchlevel 330) [i686-darwin10]
 
$ cat ./hash_sample.rb 
#!/usr/bin/env ruby 
$KCODE='u'
 
def copy_hash(h, keys)
  dst = {}
  keys.each{|k|
    dst[k] = h[k]
  }
  return dst
end
 
h = {
  'a' => 'aaaaa',
  'b' => '',
  'd' => 'dddd',
}
 
keys = ['a', 'b', 'c'] 
 
hash = copy_hash(h, keys)
hash.each{|k,v|
  v = '(nil)' if v == nil 
  v = '(empty)' if v == '' 
  puts "#{k}=#{v}"
}
 
$ ruby ./hash_sample.rb 
a=aaaaa
b=(empty)
c=(nil)

tags: Ruby zurazure

Posted by NI-Lab. (@nilab)