ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2018年5月21日(月) 10:33

All times are UTC+09:00




トピックに返信する
ユーザー名:
件名:
メッセージ本文:
こちらにメッセージをご入力ください。60000 字まで入力できます。 

フォントサイズ:
フォントカラー
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF
BBCode を無効にする
URL を自動的にパースしない
クイズ
お手数ですがカタカナで「エービー」と4文字を入力してください。:
答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。
   

トピックのレビュー - 標準では未定義の演算子の導入に関する提案
作成者 メッセージ
  記事の件名:   引用付きで返信する
新しい種類の演算子の定義は、コンセプトとしては有用なものであることは認めます。
ただそれを実装するのにどれだけ手間がかかるか想像してみてください。

もちろんコンパイラを制作しているのは山本さんなので、山本さんが出来ると仰れば反対する理由はありませんが。
投稿記事 Posted: 2007年5月08日(火) 00:12
  記事の件名:  標準では未定義の演算子の導入に関する提案  引用付きで返信する
下のような、演算子の追加定義方法を思いついたんですが、どうでしょうか?

定義の書式

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)
例とかは今手打ちで書いたのでおかしいところもあると思います。指摘してやってください。
投稿記事 Posted: 2007年5月08日(火) 00:02

All times are UTC+09:00


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