2016-03-18 32 views
0

我试图通过内置到DDMathParser中的机制在Swift中定义和格式化自定义函数。我试过按照Wiki上的说明,但对于Swift编码相对较新的人来说,没有足够的细节。我想创建的函数将被称为“dsi”,并将像以下这样调用已经内置的函数sin()和dtor():sin(dtor())。在DDMathParser中定义自定义函数(Swift)

有什么建议吗?

谢谢!

回答

1

宣布自定义函数的例子可以发现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属性。默认值是.Radiansbut you can change it to .Degrees if you create your own evaluator

+0

非常感谢!与定义一个新操作符相关的函数会采用相同的形式吗? –