読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

Prefix Operations

Scala

クラスやTraitに、

def unary_<演算子(- or + or ! or ~)> = ...

のようなメソッドを定義しておくと、

<演算子> <レシーバ>

の形式でメソッドを呼び出すことができます。

// テスト用クラス
class Foo( value:Int ) {

  override def toString = value.toString
  
  // unary_<演算子> で 「<演算子> <レシーバ>」で実行できる関数を定義できる。
  def unary_- = new Foo( value-1 )
  def unary_+ = new Foo( value+1 )
}


var foo = new Foo(10)
println(foo)

// 「<演算子> <レシーバ>」で関数を実行。
println( + foo )
println( - foo )

実行結果です。

10
11
9

if文とかで使う「&&」とか「||」がBooleanのメソッドであるのと同じで、否定も「オブジェクトのメソッド」として実現されているわけですね。ふむ。