Выполнить подготовленную математическую операцию в Objective-C

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

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

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

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

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


person Björn Kaiser    schedule 11.02.2011    source источник


Ответы (3)


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

person BJ Homer    schedule 11.02.2011
comment
Это именно то, что я искал! Большое спасибо БЖ - person Björn Kaiser; 11.02.2011

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

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

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

person Antwan van Houdt    schedule 11.02.2011

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

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

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

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

person Ole Begemann    schedule 11.02.2011