Integer
はじめに
「見た目は JavaScript、頭脳(中身)は Ruby、(安定感は AC/DC)」 でお届けしているスクリプト言語 Kinx。言語はライブラリが命。ということでライブラリの使い方編。
リポジトリ(https://github.com/Kray-G/kinx) のほうの説明を "Looks like JavaScript, feels like Ruby, and it is the script language fitting in C programmers." に変えてみた。意味的には例の名探偵のオマージュですが、英語の表現は違っていてオリジナルです。
今回は Integer です。
- 参考
- 最初の動機 ... スクリプト言語 KINX(ご紹介)
- 個別記事へのリンクは全てここに集約してあります。
- リポジトリ ... https://github.com/Kray-G/kinx
- Pull Request 等お待ちしております。
- 最初の動機 ... スクリプト言語 KINX(ご紹介)
Integer オブジェクトに括り付いたメソッドは特殊メソッドで、整数値に直接作用させることができる。特殊メソッド、および特殊オブジェクトに関する詳細は Kinx ライブラリ - String を参照してください。
Integer 特殊オブジェクト
Integer オブジェクトに対して関数定義する例は以下の通り。
Integer.times100 = function(value) {
return value * 100;
};
var val = 100.times100();
System.println(val);
実行してみよう。
10000
レシーバーが第 1 引数に来ます。
Integer
組み込み特殊メソッド
メソッド | 意味 |
---|---|
Integer.times(val, callback) | i = 0 ~ (val - 1) の範囲として、callback があれば callback(i) の結果で、無ければ i で配列を作成して返す。 |
Integer.upto(val, max, callback) | i = val ~ max の範囲で引数として callback(i) を呼ぶ。 |
Integer.downto(val, min, callback) | i = min ~ val の範囲で引数として callback(i) を呼ぶ。 |
Integer.toString(val, base) |
val を文字列に変換する。base は 10 と 16 のみサポート。 |
Integer.toDouble(val) |
val を Double に変換する。 |
Math オブジェクト・メソッド
Integer オブジェクトには Math オブジェクトと同じ特殊メソッドが存在する。詳細は以下を参照。
具体例で書くと、例えば以下のように書ける。
var a = 2.pow(10); // Math.pow(2, 10) と同じ => 1024
var b = (-10).abs(); // Math.abs(-10) と同じ => 10
単項マイナス(-
)は関数呼び出しより優先順位が低いため、カッコで括る必要があることに注意。
特殊オペレーター
単項 *
オペレーター
単項 *
オペレーターを整数値に適用した場合、文字コードに対応した文字列(1 文字)を返す。
var a = *97; // => "a"
ちなみに逆変換(*a
)は元に戻らない。文字列に対する単項 *
オペレーターは配列になるため、上記例で *a
とすると [97]
と配列となることに注意。単独で文字コードを得るには、a[0]
とする。
おわりに
Integer に特殊メソッドがあることでグッと Ruby っぽい感じがしてますが気のせいですかね。2.pow(10)
とか書けるのが結構感慨深いなー。
ここ 見ながら、今サポートしてないメソッドとかサポートしてみようかなー、と。
ではまた次回。