(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,<kosaki.motohiro / gmail.com>  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!" を使おうと
> するのはどう考えてもバグなので、お前のバグだろゴルァと例外を
> 投げるのは完全に真っ当なエラー指摘だと思います。

いや、それは違います。やってみるまでそういう環境かどうかは分からないので。