2014年7月22日火曜日

数値と文字列の配列の論理演算がしたい

 例えば・・・
[15] pry(main)> a=[1,2,3]
=> [1, 2, 3]
[16] pry(main)> b=['3','4','5']
=> ["3", "4", "5"]

 こんな感じで二つの配列があってaにだけ存在する要素を抜き出したい場合、a-bをすればいいらしいですが、上の場合は数値の3と文字列の3が区別されてしまい、下記の通り期待とは違う結果が帰ります。エラーも無し。
[17] pry(main)> a-b
=> [1, 2, 3]
でも下記のようにするとbが数値の配列と見なされて期待する解が得られる。
[18] pry(main)> a-b.map(&:to_i)
=> [1, 2]

 多分、こういう事態になる前に対処すべきだと思うんだけどどうすべきかわからずとりあえず回避法が必要になりました。

参考:
ruby 配列の中の文字列を全部数値にしたい
Rubyでメタプログラミング ~暗黙的に呼ばれるto_procメソッド (.map(&:to_i)について)

0 件のコメント:

コメントを投稿