はじめに
JavaプログラマがCurlを習得する際、最も大きなハードルと感じるのは言語仕様そのものでしょう。そこで今回は、CurlとJavaとの構文等の比較を行います。
1 変数宣言と利用頻度の高いデータ型
まずは、変数の型や宣言方法などよく利用する構文から説明します。
1-1 基本的な型
次の表を見て分かるように、プリミティブ型とStringの型名は、JavaとCurlでは大差ありません。
Java | Curl | Curl(符号なし整数) |
---|---|---|
int | int | uint |
byte | byte/int8 | uint8 |
short | int16 | uint16 |
long | int64 | uint64 |
char | char | |
float | float | |
double | double | |
boolean | bool | |
void | void | |
String | String | |
Date/Calendar | DateTime |
Curlは、符号なし整数を扱うこともできます。その場合はuintやuint8を使用します。また、IntegerやDoubleといったラッパークラスに相当するクラスはCurlにはありません。
1-2 変数宣言
Curlで変数を宣言するには「let」を使用します。letで始まる文を「let ステートメント」と呼びます。
String str = "abc";
let str:String = "abc"
「any」を使用して型定義なしに変数を宣言することも可能です。この場合の型は、動的に決定されます。
let value:any
1-3 null値を許容する変数宣言
Curlでは、null値を許容する変数であることを指定して宣言することが可能です。null値を許容する場合、型の前に#を記述します。
let str:#String = null
次のように、nullを許容しない変数に対しnullを代入すると、エラーになります。
let str:String = null
今回の記事のソースは次のコードを変更することで試すことができます。テキストエディタなどで編集し、ブラウザにドラッグするだけで、Curlアプレットを実行できます。
{curl 6.0 applet} {curl-file-attributes character-encoding = "shift-jis"} {value let str:String = "abc" || この行を変更する str || 値が表示される }
1-4 代入
Curlで代入を行うには、「set」を使用します。
str = "xyz";
set str = "xyz"
1-5 final
変更不可能な値を宣言するには、定数修飾子「constant」を使用します。
final String abc = "abc";
let constant abc:String = "abc"
1-6 インスタンス生成
Javaと同じく、Curlでインスタンスの生成を行うには「new」を使用します。
Person person = new Person();
let person:Person = {Person}
コンストラクタに変数をセットして生成する場合は、次のようになります。
Person person = new Person("Mike", 22);
let person:Person = {Person "Mike", 22}
1-7 配列、List
int[] array = new int[4];
int[] array = {1, 2, 3, 4}
List<Integer> array = new ListArray<Integer>(); array.add(1); array.add(2); array.add(3); array.add(4);
Curlで配列の定義を行うには、「FastArray-of」もしくは「Array-of」を使用します。
FastArray-of は Array-of よりも高速ですが、最大容量はその作成時点で固定され、利用できるメソッドのセットもそれほど多くはありません。
let array:{FastArray-of int} = {{FastArray-of int} max-size = 4}
let array:{FastArray-of int} = {{FastArray-of int} max-size = 4, 1, 2, 3, 4}
let array:{Array-of int} = {{Array-of int} 1, 2, 3, 4}
let array:{Array-of int} = {Array-of int} array.append(1) array.append(2) array.append(3) array.append(4)
1-8 Map
CurlでMapに値を挿入する際は「set」を使います。値を取得する際には「get」を使うか、直接キーを指定して取得します。
Map<String, Integer> map = new HashMap<String, Integer>(); map.put("a", 1); map.put("b", 2); map.put("c", 3); int aVal = map.get("a"); int cVal = map.get("c");
let map:{HashTable-of String, int} = {new {HashTable-of String, int}} map.set "a", 1 map.set "b", 2 set map["c"] = 3 let a:int = {map.get "a"} let c:int = map["c"]
1-9 コメント
単一行コメントには、「||」を使用します。また、「|#」から「#|」までがコメントとして扱われます。
// コメント
|| コメント
/* コメント1 コメント2 */
|# コメント1 コメント2 #|