5 Javaに存在しないCurlの仕組み
Curlの仕組みの中にはJavaには存在しないものも多くあります。前述の中では、4-5.メソッド定義で機能を紹介した「メソッドが複数の戻り値を返すことができる仕組み」などが挙げられます。その中で、特徴的な仕組みを挙げて説明をします。
5-1 数量・単位
Curlは型の他に単位も持っています。例えば、距離を表すDistance型には、meterや、inchという単位があります。異なる単位での数値計算や比較も可能です。
{let d:Distance}
{set d = 1meter + 50inch}
また、Velocity型はDistanceをTimeで割った型だという独自の定義も可能です。科学計算を行う場合には、プログラミング言語にCurlを利用するのも良いのではないでしょうか。
Curlがサポートしている単位は「距離」「質量」「時間」の他に「角度」「光度」「相対距離」などもサポートされています。詳細は次のURLを参照してください。
5-2 プロシージャ
JavaScriptなどで利用されるクロージャ機能もあります。Curlでは「匿名プロシージャ」とも呼ばれます。プロシージャとして型定義を指定するために、「proc-type」と「proc」を利用します。
ここでは、単純な足し算のクロージャを例にとって説明します。
{value
let p:{proc-type {int, int}:int} =
{proc {arg1:int, arg2:int}:int
{return arg1 + arg2}
}
let result:int = {p 10, 20}
result
}
まず、クロージャを作成するには、「procマクロ」を利用します。procマクロの引数に、実際に必要な引数(ここで足し算する2つの値arg1とarg2)を"{"と"}"で囲み、その後戻り値の型を「:」の後に記載します。
このクロージャ自体を変数に代入する場合(上記の例では、pという変数に代入)、上記のように「proc-typeマクロ」を利用しプロシージャ変数の型を定義します。このプロシージャを実行するには、上記のように{プロシージャ変数 引数1, 引数2}のように記述します。
また、この変数をさらに他のプロシージャやメソッドの引数として指定できますので、JavaScriptでよく利用されるコールバック関数的な使い方もできます。
まとめ
JavaとCurlの構文を比較すると、予想以上に似ている箇所があったのではないでしょうか。また、Curl独自の強力な機能もあります。Curlを始めた場合、Curl独自の括弧の記述に慣れ、今回紹介した構文を利用できるようになるまでが最初のステップではないかと思います。
今回で、本連載は最終回になります。本連載が、Curlを使用する開発者のリファレンスとして少しでもお役に立てれば幸いです。これまでご愛読いただいた読者の皆さまありがとうございました。また株式会社カールの方々には毎回レビューをして頂きました。この場を借りて改めてお礼申し上げます。ありがとうございました。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- Java開発者のためのCurl入門連載記事一覧
-
- Java開発者のためのCurl入門-JavaとCurlの構文比較
- Java開発者のためのCurl入門-CSVファイルの読み込みとグラフ表示
- Java開発者のためのCurl入門-グラフの描画
- この記事の著者
-
木村聡(キムラサトシ)
2000年からJavaによるWeb開発に携わる。Seasarプロジェクトコミッタであり、コミッタとしての経験をもとに現在は仕事としてフレームワークの開発を行っている。著書に、「Javaフレームワーク開発入門」や「Eclipseで学ぶはじめてのJava」等がある。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社
この記事は参考になりましたか?
この記事をシェア
