[#50363] [質問] Ruby socket.send でUDP Packet が出ない? ネットワーク環境によるものか? — <yamataka@...08.itscom.net>

山口と申します。

9 messages 2016/07/27

[ruby-list:50359] CSV のコンバーターが nil に対して効かない

From: "5.5" <5.5@...>
Date: 2016-07-25 12:52:54 UTC
List: ruby-list #50359
5.5 です。

CSV のコンバーターの仕様が Ruby 2.1 → 2.2 で変わったんで
しょうか?

ダブルクオートで囲まれてない空フィールドを nil じゃなくて
空文字列にするため,いままで

   ->(s){s.to_s}

というコンバーターを使ってきました。
ところが,Ruby 2.2, 2.3, では,そもそも nil に対しては
コンバーターが働かないようで,nil のままになります。

再現コードは以下の通りです。

require "csv"

CSV.new(",foo", converters: ->(s){s.to_s}).each do |row|
   p row
end

これで,

ruby 2.1.7p400 (2015-08-18 revision 51632) [i386-mingw32]

だと

["", "foo"]

になりますが,

ruby 2.2.5p319 (2016-04-26 revision 54774) [i386-mingw32]

だと

[nil, "foo"]

になっちゃいます。

公式リファンレスマニュアルを見ても,とくにこのあたりの仕様
変更についての記述が見当たりませんでした。
Ruby 2.2.0 のリリースノート
https://www.ruby-lang.org/ja/news/2014/12/25/ruby-2-2-0-released/
や NEWS
https://github.com/ruby/ruby/blob/v2_2_0/NEWS
にも「CSV」の文字が見当たりませんでした。

-- 
5.5@moji.gr.jp

In This Thread

Prev Next