Redesign of the Evaluation System
This commit is contained in:
@@ -21,24 +21,37 @@
|
||||
return self;
|
||||
}
|
||||
|
||||
- (instancetype)initWithFactor:(id<MPParsedFactor>)factor
|
||||
{
|
||||
self = [super init];
|
||||
if (self) {
|
||||
_factors = [[NSMutableArray alloc] initWithObjects:factor, nil];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (NSArray *)factors
|
||||
{
|
||||
return _factors;
|
||||
}
|
||||
|
||||
- (void)addFactor:(MPParsedFactor *)factor
|
||||
- (void)addFactor:(id<MPParsedFactor>)factor
|
||||
{
|
||||
[_factors addObject:factor];
|
||||
}
|
||||
|
||||
- (NSDecimalNumber *)value
|
||||
- (NSDecimalNumber *)evaluateWithError:(MPParseError *__autoreleasing *)error
|
||||
{
|
||||
if (_factors.count == 0) {
|
||||
return [NSDecimalNumber zero];
|
||||
}
|
||||
NSDecimalNumber *value = [NSDecimalNumber one];
|
||||
for (MPParsedFactor *factor in _factors) {
|
||||
value = [value decimalNumberByMultiplyingBy:factor.value];
|
||||
for (id<MPParsedFactor> factor in _factors) {
|
||||
NSDecimalNumber *factorValue = [factor evaluateWithError:error];
|
||||
if (!factorValue) {
|
||||
return nil;
|
||||
}
|
||||
value = [value decimalNumberByMultiplyingBy:factorValue];
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user