From: KOSAKI Motohiro Date: 2012-02-10T05:23:12+09:00 Subject: [ruby-dev:45222] Re: [Ruby 1.9-Feature#3946][Open] Array#packのqQ指定子に機種依存サイズフラグ!を追加 (2/9/12 2:19 PM), U.Nakamura wrote: > こんにちは、なかむら(う)です。 > > 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があるかどうかとは理論上は関 > 係がございません。 > # 現実問題として今はどこでも両者は同じなんでしょうけど。 うーん、int64と書いたのがよくなかったのかな。意図は LONG_LONGであって 「long longっぽい何か」のつもりで使っていました。 >> この状況で失敗したときってアプリ側でfallbackが書けるケースはまれで >> そのまま終了するのですが、ArgumentError だとアプリケーションにバグが >> あることを暗に言っているのでミスリーディングだと思うのです。 > > なお、long longがないプラットフォームで "q!" "Q!" を使おうと > するのはどう考えてもバグなので、お前のバグだろゴルァと例外を > 投げるのは完全に真っ当なエラー指摘だと思います。 いや、それは違います。やってみるまでそういう環境かどうかは分からないので。