Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。4isa演算子・asa演算子switch式(マクロ)type-switch式(マクロ)最後にisa演算子・asa演算子ここからは、型を使ったより実践的な処理について説明します。any変数を引数で利用した場合などデータ型を判定し、その種類によって処理を分けたい場合について考えます。今、複数の引数の平均値を計算するプロシージャaverageを考えます。処理を単純化するために、引数には整数(int)、実数(double)、文字列(String)のどれかが渡されるとします。引数の型をチェックするために、if式の条件判断にisa演算子を使います。変数をanyから特定の型にキャストするために、asa演算子を使います。1.9}実行結果です(図3)。図3switch式(マクロ)今度は、先ほどのサンプルプログラムをswitch式で書いてみます。指定された値と比較を行う演算子の指定ができます。asa演算子でキャストして利用しました。その2つを同時に行ってくれるのが、type-switch式になります。type-switch式でサンプルプログラムを書き直してみます。内部がとてもすっきりしました。最後にCurl言語の中枢にあるデータ型について見てきました。プリミティブ型、クラス型、プロシージャ型などがあり、すべてオブジェクトとして扱うことが可能です。データ型のすべてがTypeクラスのサブクラスのインスタンスとして関連付けられていました。Typeクラスおよびそのサブクラスを利用することで、強力なリフレクション機能を実現できます。最後にデータ型の判定方法をサンプルプログラムを通して説明しました。データ型は簡単そうに見えて、奥が深い世界です。