定義の書式
Sub/Function Operator "NewOperatorName" (...) [As ...] {[priority:"OldOperatorName"],[unit:Direction]}
NewOperatorName ・・・演算子の名前
OldOperatorName・・・演算の優先順位が等価である演算子の名前。省略時:As(例)
Direction・・・演算子の結合性。値:LEFT,RIGHT 省略時:LEFT(例)
OldOperatorNameが代入演算子系の場合は必ず省略or無視(例)
例(これだけだと導入するだけ無駄に見えるが、応用範囲はかなり広いであろう。)
コード: 全て選択
Class Foo
Public
a As Long
Sub Operator "addto" (foo As Foo) {priority:"+="}
a += foo.a
End Sub
End Class
#console
Dim A As Foo,B As Foo
A.a=1
B.a=3
A addto B
Print A.a
Sleep(10000)
コード: 全て選択
Class Foo
Public
x As Double
y As Double
Sub Operator "span" (cita As Double) {priority:"*="}
Dim sx As Double,sy As Double
Dim x2 As Double,y2 As Double
cita*=Math.PI()/180
sx=Math.Cos(cita)
sy=Math.Sin(cita)
x2=x*sx-y*sy
y2=x*sy+y*sx
x=x2
y=y2
End Sub
End Class
#console
Dim A As Foo
A.x=1
A.y=0
A span 45
Print A.x
Print A.y
Sleep(10000)