ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2017年11月21日(火) 13:13

All times are UTC+09:00




新しいトピックを投稿する  トピックへ返信する  [ 2 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2007年5月08日(火) 00:02 
オフライン

登録日時: 2005年7月25日(月) 13:27
記事: 893
住所: 埼玉県東松山市
下のような、演算子の追加定義方法を思いついたんですが、どうでしょうか?

定義の書式

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)
例2
コード:
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)
例とかは今手打ちで書いたのでおかしいところもあると思います。指摘してやってください。

_________________
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2007年5月08日(火) 00:12 
オフライン

登録日時: 2005年5月31日(火) 07:49
記事: 162
新しい種類の演算子の定義は、コンセプトとしては有用なものであることは認めます。
ただそれを実装するのにどれだけ手間がかかるか想像してみてください。

もちろんコンパイラを制作しているのは山本さんなので、山本さんが出来ると仰れば反対する理由はありませんが。


通報する
ページトップ
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 2 件の記事 ] 

All times are UTC+09:00


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[1人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by KONISHI Yohsuke