2016-11-05 20 views

答えて

3

Rubyプロジェクトは、通常、前処理もコンパイルもしていないため、プリプロセッサの使用は一般的ではありません。

define constantsには、大文字の変数名を使用できます。

しかし、実際にプリプロセッサが必要な場合は、CPPをrubyやその他の言語で使用できます。実際の構文は実際には気にしません。

+0

これまでここで唯一正しい答えです。また、 's /大文字/大文字/'。 – mudasobwa

+0

はい、回答を更新しました。それにもかかわらず、大文字は定数(クラスやモジュールを除く)のための規約です。 – lorefnon

0

直接的な同等物はありませんが、それを行うことはできます。例えば、C/C++プリプロセッサで

#DEFINE PI 3.14159 

はRubyで

PI=3.14159 

することができます。大文字の変数は、ルビの定数です。

マクロビーイングの他のタイプは、例えば

#DEFINE ADD(A, B) A + B 

はルビーで

def add(a, b) 
    a + b 
end 

あります。 C/C++スタイルのマクロだけでなく、Rubyで簡単にメソッドを定義することができるので、関数マクロに関しては、C/C++スタイルのマクロを使用するのが本当の理由です。

+0

Ruby定数がC/C++プリプロセッサマクロに相当すると誤って判断した場合、#define ADD(A、B)A + Bは 'ADD = - (a、b){a + b} '。 – mudasobwa

+0

プリプロセッサマクロをメソッドではなくラムダとして定義するのはなぜですか? 'ADD.call(1,2)'は 'add(1,2)'のようにはるかにCです。 –

+0

'ADD'が上書きされないようにするには、うまくいくと思いますが、それは懸念されることはありません。私はCのマクロスタイル_シンボリック定数をルビの定数と同じに見立てていました。 –

関連する問題