我正在尝试通过 DDMathParser 中内置的机制在 Swift 中定义和格式化自定义函数。我已经尝试按照 Wiki 上的说明进行操作,但对于 Swift 编码相对较新的人来说,没有足够的细节。我要创建的函数将被称为“dsi”,并会像这样调用已经内置的函数 sin() 和 dtor():sin(dtor())。
有什么建议吗?
谢谢!
我正在尝试通过 DDMathParser 中内置的机制在 Swift 中定义和格式化自定义函数。我已经尝试按照 Wiki 上的说明进行操作,但对于 Swift 编码相对较新的人来说,没有足够的细节。我要创建的函数将被称为“dsi”,并会像这样调用已经内置的函数 sin() 和 dtor():sin(dtor())。
有什么建议吗?
谢谢!
可以在 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
,但.Degrees
如果您创建自己的评估器,您可以将其更改为。