Integer 組込みオブジェクト

この章では組込み変数領域が初めから備えている Integer 組込みオブジェクトを定義する。

Integer オブジェクトは、スクリプトで扱われる整数を表すオブジェクトである。

Integer のメンバ

prototype
Real.prototype を準プロトタイプとするオブジェクト。
name
文字列オブジェクト "Integer"
zero
整数 0 を表す Integer オブジェクト
one
整数 1 を表す Integer オブジェクト
and メソッド
関数として呼出したとき、引数が全て Integer オブジェクトならば (引数の個数が 0 の場合を含む)、次の動作を行う:
  1. 原始整数型の −1 の値を v とする。
  2. 渡された引数の個数を n とする。
  3. i = 1, 2, …, n について、i = 1 から i = n まで順番に次の動作を行う:
    1. i 個目の引数の表す整数と v とのビットごとの論理積を取り、その値を改めて v とする。
  4. [[整数 v を表す Integer オブジェクト]] を返す。
引数に Integer オブジェクトでないオブジェクトが含まれている場合の 関数呼出しでの動作は規定しない。
or メソッド
関数として呼出したとき、引数が全て Integer オブジェクトならば (引数の個数が 0 の場合を含む)、次の動作を行う:
  1. 原始整数型の 0 の値を v とする。
  2. 渡された引数の個数を n とする。
  3. i = 1, 2, …, n について、i = 1 から i = n まで順番に次の動作を行う:
    1. i 個目の引数の表す整数と v とのビットごとの包括的論理和を取り、その値を改めて v とする。
  4. [[整数 v を表す Integer オブジェクト]] を返す。
引数に Integer オブジェクトでないオブジェクトが含まれている場合の 関数呼出しでの動作は規定しない。
xor メソッド
関数として呼出したとき、引数が全て Integer オブジェクトならば (引数の個数が 0 の場合を含む)、次の動作を行う:
  1. 原始整数型の 0 の値を v とする。
  2. 渡された引数の個数を n とする。
  3. i = 1, 2, …, n について、i = 1 から i = n まで順番に次の動作を行う:
    1. i 個目の引数の表す整数と v とのビットごとの排他的論理和を取り、その値を改めて v とする。
  4. [[整数 v を表す Integer オブジェクト]] を返す。
引数に Integer オブジェクトでないオブジェクトが含まれている場合の 関数呼出しでの動作は規定しない。
not メソッド
1-ary メソッド。一つの Integer オブジェクトを引数として関数として呼出されると、次の動作を行う:
  1. 引数の表す整数値と整数値 −1 とのビットごとの排他的論理和を取り、その値を v とする。
  2. [[整数 v を表す Integer オブジェクト]] を返す。
上記以外の引数における関数としての呼び出しの動作は規定しない。
shiftLeft メソッド
2-ary メソッド。二つの Integer オブジェクトを引数として関数として呼出されると、次の動作を行う:
  1. 一つ目の引数の表す整数値を p、二つ目の引数の表す整数値を q として、pq ビット左にシフトした値を v とする。ただし、q < 0 のときは、右に −q ビットシフトするものとする。
  2. [[整数 v を表す Integer オブジェクト]] を返す。
上記以外の引数における関数としての呼び出しの動作は規定しない。
shiftRight メソッド
2-ary メソッド。二つの Integer オブジェクトを引数として関数として呼出されると、次の動作を行う:
  1. 一つ目の引数の表す整数値を p、二つ目の引数の表す整数値を q として、pq ビット右にシフトした値を v とする。ただし、q < 0 のときは、左に −q ビットシフトするものとする。
  2. [[整数 v を表す Integer オブジェクト]] を返す。

Integer の内部メンバ

$prototype
Type.prototype

Integer の関数としての呼出し

Integer は関数として呼出し可能である。一つのオブジェクト a を引数として関数として呼出されると次の処理を実行する:

  1. aInteger オブジェクトならば、[[a]] を返す。
  2. aRational オブジェクトならば、引数を Integer縮小変換し、その結果を値とする正常終了の結果を返す。
  3. aFloat オブジェクトならば、引数を Integer縮小変換し、その結果を値とする正常終了の結果を返す。
  4. a文字列オブジェクトならば、その文字列オブジェクトの内容を数値として解釈し、その値を表す Integer オブジェクトを r として、[[r]] を返す。文字列が数値として解釈できない場合は、新しい ArgumentError のインスタンスを投げる。 文字列の解釈の方法は実行環境に任せる
  5. 渡された引数が上のどの条件にも当てはまらない場合の動作は規定しない。

呼出しにおける引数の個数が一つでない場合の動作は規定しない。

Integer オブジェクトのプロパティ

Integer オブジェクトは以下のプロパティを持つ。ただし、 Integer.prototype やその準プロトタイプのプロパティが スクリプトの実行によって変更された場合は、この限りではない。

and メソッド
Math$and メソッド
関数として呼出したとき、@this 値および全ての引数が Integer オブジェクトならば、その @this 値と全ての引数を引数として Integer.and を関数として呼出し、その結果を返す。
or メソッド
Math$or メソッド
関数として呼出したとき、@this 値および全ての引数が Integer オブジェクトならば、その @this 値と全ての引数を引数として Integer.or を関数として呼出し、その結果を返す。
xor メソッド
Math$xor メソッド
関数として呼出したとき、@this 値および全ての引数が Integer オブジェクトならば、その @this 値と全ての引数を引数として Integer.xor を関数として呼出し、その結果を返す。
not メソッド
Math$not メソッド
0-ary メソッド。関数として呼出したとき、@this 値が Integer オブジェクトであり、引数の個数が 0 ならば、その @this 値を引数として Integer.not を関数として呼出し、その結果を返す。
shiftLeft メソッド
1-ary メソッド。関数として呼出したとき、 渡された引数の個数が一つであり、@this 値および引数が共に Integer オブジェクトならば、その @this 値と引数を引数として Integer.shiftLeft を関数として呼出し、その結果を返す。
shiftRight メソッド
1-ary メソッド。関数として呼出したとき、 渡された引数の個数が一つであり、@this 値および引数が共に Integer オブジェクトならば、その @this 値と引数を引数として Integer.shiftRight を関数として呼出し、その結果を返す。
toString メソッド
0-ary メソッド。Integer オブジェクトを @this 値としてこのメソッドを呼出すと、渡された @this 値を文字列オブジェクトに変換したものを結果として返す。 文字列への変換の方法は実行環境に任せる。

等価縮小変換

Real オブジェクトInteger オブジェクトに変換する操作 real-to-int は、一つの Real オブジェクト v に対して以下の動作を行い、一つの 整数または特殊な値 null を結果として返す:

Integer への縮小変換では、 値は必ず整数に変換されるが、real-to-int では元の値が整数でない場合には変換は行われない。

© 2006-2007 Magicant