在 DDMathParser 中定义自定义函数 (Swift)
Define custom functions in DDMathParser (Swift)
我正在尝试通过 DDMathParser 内置的机制在 Swift 中定义和格式化自定义函数。我已经尝试按照 Wiki 上的说明进行操作,但是对于 Swift 编码相对较新的人来说,没有足够的细节。我想要创建的函数将被称为 "dsi" 并且会像这样调用已经内置的函数 sin() 和 dtor() :sin(dtor()).
有什么建议吗?
谢谢!
可以找到声明自定义函数的示例 in the unit tests for DDMathParser,我将在此处包括:
func testCustomFunction() {
let function = Function(name: "foo", evaluator: { (args, subs, eval) throws -> Double in
return 42
})
let eval = Evaluator()
guard XCTAssertNoThrows(try eval.registerFunction(function)) else { return }
guard let e = XCTAssertNoThrows(try Expression(string: "foo()")) else { return }
guard let d = XCTAssertNoThrows(try eval.evaluate(e)) else { return }
XCTAssertEqual(d, 42)
}
您显然希望提供传递给 Function
构造函数的评估块的不同实现。
顺便说一下,您是否知道 DDMathParser 支持您已经描述的确切情况? Evaluator
对象有一个 angleMeasurementMode
属性。默认值为 .Radians
、but you can change it to .Degrees
if you create your own evaluator、
我正在尝试通过 DDMathParser 内置的机制在 Swift 中定义和格式化自定义函数。我已经尝试按照 Wiki 上的说明进行操作,但是对于 Swift 编码相对较新的人来说,没有足够的细节。我想要创建的函数将被称为 "dsi" 并且会像这样调用已经内置的函数 sin() 和 dtor() :sin(dtor()).
有什么建议吗?
谢谢!
可以找到声明自定义函数的示例 in the unit tests for DDMathParser,我将在此处包括:
func testCustomFunction() {
let function = Function(name: "foo", evaluator: { (args, subs, eval) throws -> Double in
return 42
})
let eval = Evaluator()
guard XCTAssertNoThrows(try eval.registerFunction(function)) else { return }
guard let e = XCTAssertNoThrows(try Expression(string: "foo()")) else { return }
guard let d = XCTAssertNoThrows(try eval.evaluate(e)) else { return }
XCTAssertEqual(d, 42)
}
您显然希望提供传递给 Function
构造函数的评估块的不同实现。
顺便说一下,您是否知道 DDMathParser 支持您已经描述的确切情况? Evaluator
对象有一个 angleMeasurementMode
属性。默认值为 .Radians
、but you can change it to .Degrees
if you create your own evaluator、