2016-03-18 36 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

非常感謝!與定義一個新操作符相關的函數會採用相同的形式嗎? –