1

I want to to math operations with some kind of prepared formula that would look like tan(%f)*1000 or %f+%f where the %f has to be replaced by an argument.

Is there a function in Objective-C that I can pass the format of my formula and the required numbers to execute this prepared operation?

I hope the problem is described understandable, if not, leave a comment.

Thanks in advance.

Edit 1: Thanks for your answers so far, but I'm looking for something more dynamic. The block and inline function is great, but to static. I also understand that this may be something hard to achieve out of the box.

Björn Kaiser
  • 9,882
  • 4
  • 37
  • 57

3 Answers3

3

There is nothing that would do it this way, however what you could do is rewrite your "format" into a function, and just pass the arguments it needs to have, much faster and much easier.

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

inline is a compiler feature that you can use to speed things up. It will replace the function call with the code it executes when you compile. This will result in a lager binary though.

Antwan van Houdt
  • 6,989
  • 1
  • 29
  • 52
3

You may be interested in DDMathParser, found here. I believe it will do everything you're looking for.

BJ Homer
  • 48,806
  • 11
  • 116
  • 129
2

If I understand your question correctly, Objective-C Blocks are great for this.

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

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

You can pass the block that contains your algorithm to other objects or methods.

Ole Begemann
  • 135,006
  • 31
  • 278
  • 256