2016-11-05 6 views

ответ

3

Проекты Ruby обычно не имеют ни предварительной обработки, ни этапа компиляции, и использование любого препроцессора не является обычным явлением.

Вы можете использовать define constants с использованием имен переменных капитализированных переменных.

Однако, если вам действительно нужен предварительный процессор, вы можете использовать CPP с рубином или любым другим языком - на самом деле это не очень важно для синтаксиса.

+0

Единственный правильный ответ здесь пока. Кроме того, 's/upper case/capitalized /'. – mudasobwa

+0

Да, я обновил ответ. Тем не менее, верхний регистр - это соглашение для констант (кроме классов и модулей). – lorefnon

0

Не существует прямого эквивалента, но вы можете это сделать. Например,

#DEFINE PI 3.14159 

в C/C++ препроцессор может быть

PI=3.14159 

в рубина. Капитализированные переменные - это константы в рубине.

Другой тип макро существа, например

#DEFINE ADD(A, B) A + B 

является

def add(a, b) 
    a + b 
end 

в рубина. Существует реальная причина использовать макрос стиля C/C++ в рубине, когда речь идет о макросах функций, поскольку вы можете легко определить методы в рубине, которые работают так же хорошо, как и макросы стиля C/C++.

+0

Если вы [ошибочно] решили, что константа Ruby является эквивалентом макроса препроцессора C/C++, '#define ADD (A, B) A + B' будет' ADD = -> (a, b) {a + b} '. – mudasobwa

+0

Почему вы определяете макрос препроцессора как лямбда вместо метода? 'ADD.call (1,2)' намного меньше C, чем 'add (1, 2)'. –

+0

Если вы хотите, чтобы 'ADD' не переопределялся, я думаю, что это может сработать, но вряд ли это будет проблемой. Я больше отождествлял макросимволы C в макросимволе с константами рубина. –

Смежные вопросы