Выполнить «подготовленную» математическую операцию в Objective-C - PullRequest
1 голос
/ 11 февраля 2011

Я хочу объединить операции с какой-то подготовленной формулой, которая будет выглядеть как tan(%f)*1000 или %f+%f, где% f должен быть заменен аргументом.

Есть ли в Objective-C функция, позволяющая передать формат формулы и числа, необходимые для выполнения этой подготовленной операции?

Надеюсь, описанная проблема понятна, если нет, оставьте комментарий.

Заранее спасибо.

Редактировать 1: Спасибо за ваши ответы, но я ищу что-то более динамичное. Блочная и встроенная функция отличная, но статичная. Я также понимаю, что это может быть что-то трудно достичь из коробки.

Ответы [ 3 ]

3 голосов
/ 11 февраля 2011

Вас может заинтересовать DDMathParser, находится здесь .Я верю, что он сделает все, что вы ищете.

3 голосов
/ 11 февраля 2011

Нет ничего, что могло бы сделать это таким образом, однако, что вы могли бы сделать, это переписать ваш «формат» в функцию и просто передать необходимые аргументы, гораздо быстрее и намного проще.

inline float add(float p_x,float p_y)
{ return p_x+p_y; }

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

2 голосов
/ 11 февраля 2011

Если я правильно понимаю ваш вопрос, блоки Objective-C отлично подходят для этого.

typedef double (^CalcBlock)(double);
CalcBlock myBlock = ^(double input) {
    return (tan(input) * 1000);
};

NSLog(@"Result: %f", myBlock(M_PI_2));

Вы можете передать блок, содержащий ваш алгоритм, другим объектам или методам.

...