【问题标题】:Define custom functions in DDMathParser (Swift)在 DDMathParser (Swift) 中定义自定义函数
【发布时间】:2016-03-18 14:36:17
【问题描述】:

我正在尝试通过 DDMathParser 中内置的机制在 Swift 中定义和格式化自定义函数。我已经尝试按照 Wiki 上的说明进行操作,但对于 Swift 编码相对较新的人来说,没有足够的细节。我要创建的函数将被称为“dsi”,并会调用已经内置的函数 sin() 和 dtor(),如下所示:sin(dtor())。

有什么建议吗?

谢谢!

【问题讨论】:

    标签: swift function swift2 customization ddmathparser


    【解决方案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

    【讨论】:

    • 非常感谢!与定义新运算符相关的函数是否会采用相同的形式?
    猜你喜欢
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    相关资源
    最近更新 更多