From: Tanaka Akira <akr@...>
Date: 2012-06-11T13:19:28+09:00
Subject: [ruby-dev:45716] Re: [ruby-trunk - Feature #3946] 	Array#packのqQ指定子に機種依存サイズフラグ!を追加

2012年6月11日 10:38 usa (Usaku NAKAMURA) <usa@garbagecollect.jp>:
>
> * Q!、q!は必要か?
>  →どうやら必要らしい(ユースケースがある)
> * 問題点はなんぞ?
>  →LONG_LONG(≒long long)がないプラットフォームでどうするか未定
>    (1) 他のpack内エラーと同様にArgumentErrorでいいんじゃね?
>    (2) 他のpack内エラーと区別するために別の例外であるべき
>        (a) NotImplementedError
>        (b) 新規例外クラス
>
> ということのようです。
> ぶっちゃけると、LONG_LONGがないコンパイラは現時点でサポートされてる気がしないので本当にどうでもいいのですが、どうせ誰も踏まないなら何でもいいわけなのでNotImplementedErrorで妥協したく思います。

私が気になっている点は、LONG_LONG と long long の違いです。
[ruby-dev:42380] や [ruby-dev:45216] でも書きましたが、
純粋に long long が存在する場合の機能であれば、賛成です。

しかし、「LONG_LONG(≒long long)」と書いてあることから、それらが同一視されており、
LONG_LONG はあるが long long がない、というプラットフォームについて、
Q!, q! が LONG_LONG として動作するのは、pack の他のものと異なり、
Ruby の実装内部の定義が現れてしまっているのではないかと懸念しています。

なお、例外については ArgumentError でも NotImplementedError でもかまいません。
個人的には ArgumentError だろうと思っていました。
-- 
[田中 哲][たなか あきら][Tanaka Akira]