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