From: "U.Nakamura" Date: 2012-02-10T04:19:34+09:00 Subject: [ruby-dev:45220] Re: [Ruby 1.9-Feature#3946][Open] Array#packのqQ指定子に機種依存サイズフラグ!を追加 こんにちは、なかむら(う)です。 In message "[ruby-dev:45219] Re: [Ruby 1.9-Feature#3946][Open] Array#packのqQ指定子に機種依存サイズフラグ!を追加" on Feb.10,2012 02:45:01, wrote: > > では、以前も述べたように存在しないときの挙動はArgumentErrorで > > よいと思いますが、誰か異論がある人はいますでしょうか? > > 現実的な範囲ではどのコンパイラもソフトウェアエミュレーションでint64_t を > サポートできているようなので細かい話ですがプラットフォームの都合で > 失敗するときに ArgumentError にするのはあまり好きではありません。 64bit整数のpack/unpackを意味するフォーマット指定子 "q" "Q" は 既にあって、int64_tがあろうがなかろうが動作するようになってい ます。 今している話はこれをArgumentErrorにする、という話ではありませ ん。 このticketはlong long(Rubyソースコード上ではLONG_LONG)を意味 するフォーマット指定子 "q!" "Q!" を追加しましょう、という提案 であり、「存在しないとき」云々はlong longがない場合はどーしま しょーか、という話なので、int64_tがあるかどうかとは理論上は関 係がございません。 # 現実問題として今はどこでも両者は同じなんでしょうけど。 > この状況で失敗したときってアプリ側でfallbackが書けるケースはまれで > そのまま終了するのですが、ArgumentError だとアプリケーションにバグが > あることを暗に言っているのでミスリーディングだと思うのです。 なお、long longがないプラットフォームで "q!" "Q!" を使おうと するのはどう考えてもバグなので、お前のバグだろゴルァと例外を 投げるのは完全に真っ当なエラー指摘だと思います。 それでは。 -- U.Nakamura