0

DDMAthParser に組み込まれているメカニズムを使用して、Swift でカスタム関数を定義およびフォーマットしようとしています。Wiki の指示に従ってみましたが、Swift コーディングに比較的慣れていない人にとっては、十分な詳細がありません。作成したい関数は「dsi」と呼ばれ、すでに組み込まれている関数 sin() および dtor() を次のように呼び出します: sin(dtor())。

何かアドバイス?

ありがとう!

4

1 に答える 1

1

カスタム関数を宣言する例は、 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できます。

于 2016-03-20T20:29:26.613 に答える