7

C のようにテキスト内置換を行うマクロを Ruby で使用する方法はありますか?

例えば:

define ARGS 1,2
sum(ARGS) # returns 3

編集:より具体的には、私の問題は次のようになります:

@button1 = FXButton.new(self, "Button 1",:opts => BUTTONPROPERTIES,:width => width, :height => height)
@button2 = FXButton.new(self, "Button 2",:opts => BUTTONPROPERTIES,:width => width, :height => height)
@button3 = FXButton.new(self, "Button 3",:opts => BUTTONPROPERTIES,:width => width, :height => height)

理想的には、コードを次のようにしたいと思います。

@button1 = FXButton.new(self, "Button 1", ALLBUTTONPROPERTIES)
@button2 = FXButton.new(self, "Button 2", ALLBUTTONPROPERTIES)
@button3 = FXButton.new(self, "Button 3", ALLBUTTONPROPERTIES)

「幅」と「高さ」の変数が、あらかじめ決められた値に設定しただけでは、FXButton クラスの初期化に適切に渡されないことに注意してください。この問題を処理する何らかのコード置換はありますか?

4

4 に答える 4

7

おそらく、あなたがやろうとしていることを回避する別の方法があります。Ruby はコンパイルされた言語ではなく、解釈された言語であるため、プリプロセッサ マクロは意味がありません。

特にあなたの例では、それを行うための非常にきれいな方法があります:

args = [1, 2]
sum(*args) # equivalent to sum( 1, 2 )
于 2013-06-14T13:59:12.777 に答える
7

ruby には前処理がなく、マクロが意味をなさない。文字列定数または必要な他のタイプの定数を使用するだけです。

于 2013-06-14T13:54:05.940 に答える