Help us understand the problem. What is going on with this article?

Kinx ライブラリ - Integer

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 です。

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) とか書けるのが結構感慨深いなー。

ここ 見ながら、今サポートしてないメソッドとかサポートしてみようかなー、と。

ではまた次回。

Kray-G
C++ & boost lover だったが、禅の心持ちというかシンプル・イズ・ザ・ベストの精神で C に回帰中。メタルからロックンロールに戻ってきて Rolling Stones に今更夢中。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away