0
我试图通过内置到DDMathParser中的机制在Swift中定义和格式化自定义函数。我试过按照Wiki上的说明,但对于Swift编码相对较新的人来说,没有足够的细节。我想创建的函数将被称为“dsi”,并将像以下这样调用已经内置的函数sin()和dtor():sin(dtor())。在DDMathParser中定义自定义函数(Swift)
有什么建议吗?
谢谢!
我试图通过内置到DDMathParser中的机制在Swift中定义和格式化自定义函数。我试过按照Wiki上的说明,但对于Swift编码相对较新的人来说,没有足够的细节。我想创建的函数将被称为“dsi”,并将像以下这样调用已经内置的函数sin()和dtor():sin(dtor())。在DDMathParser中定义自定义函数(Swift)
有什么建议吗?
谢谢!
宣布自定义函数的例子可以发现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。
非常感谢!与定义一个新操作符相关的函数会采用相同的形式吗? –