OOP

オーバーロードはできません?(5)〜残余引数〜

残余引数を使うと、プロシージャやメソッドにおいて任意の数の引数を受け取ることができるようになります。 例えば、以下のように引数に任意の数のdouble値を受け取ってその合計を返すプロシージャを定義できます。 {define-proc {sum ...:double}:double le…

オーバーロードはできません?(4)〜any型+type-switch〜

今回はany型とtype-switchマクロを使用して、引数の型に応じて異なる処理を行わせる方法を紹介します。 any型とは、任意のデータ型を保持する変数に指定するデータ型です。any型として指定された変数*1には、クラス型だけでなくプリミティブ型、プロシージャ…

オーバーロードはできません?(3)〜暗黙の型変換〜

popup-messageとゆうプロシージャがあります。手軽にポップアップを表示できるため、デバッグなどに活用したりとご存知の方も多いことでしょう。今更説明の必要もないプロシージャだと思われますが、敢えてその使い方を見ていこうと思います。 以下のような…

オーバーロードはできません?(2)〜キーワード引数〜

オーバーロードを代替するcurlの機能紹介の第一回目はキーワード引数です。キーワード引数とは、引数の名前と値のペアを指定して任意の順番で渡すことのできる仕組みです。そして、その引数は省略でき、省略された場合は決められた初期値が用いられます。 以…

オーバーロードはできません?(1)

curlではメソッドやプロシージャのオーバーロードを許していません。 例えば {define-class Foo {method {do i:int}:void ... } {method {do s:String}:void ... } {method {do i:int, s:String}:void ... } }のように同じクラス(もしくはサブクラス)に引…