Paul Heggartyが作成したスウィフト電卓をこのCS193p(Stanford、Winter 2017)のTypescriptコード(この場合はIonic 3(Angular 4))に変換しようとしています。 。Typescript/Javascriptのスウィフトクロージャ
私は可能な限り同じようにすることに焦点を当てていません。
私はかなり遠くに来ましたが、私はタイプスクリプトで次のことをするのに苦労しています。
private var operations: Dictionary<String,Operation> = [
"+" : Operation.binaryOperation({ $0 + $1 }),
"−" : Operation.binaryOperation({ $0 - $1 }),
"÷" : Operation.binaryOperation({ $0/$1 }),
"×" : Operation.binaryOperation({ $0 * $1 }),
"π" : Operation.constant(Double.pi),
"√" : Operation.preFixUnaryOperation(sqrt),
"x²" : Operation.postFixUnaryOperation({ pow($0, 2) }),
"x³" : Operation.postFixUnaryOperation({ pow($0, 3) }),
"=" : Operation.equals,
"±" : Operation.preFixUnaryOperation({ -$0 }),
"sin": Operation.preFixUnaryOperation(sin),
"cos": Operation.preFixUnaryOperation(cos),
"tan": Operation.preFixUnaryOperation(tan),
"e" : Operation.constant(M_E)
]
これまでの説明では、「{}」型の「操作」というプライベート変数を作成していました。
その後呼び出すことで、それを "埋める":
this.operations['+' = Operation.binaryOperation(() => {arguments[0] + argumenst[1]})
充填部分が作業を行います。私はこのような関数をどのように解析するのか分かりません。スウィフトで
列挙操作:活字体で
private enum Operation {
case constant(Double)
case preFixUnaryOperation((Double) -> Double)
case postFixUnaryOperation((Double) -> Double)
case binaryOperation((Double,Double) -> Double)
case equals
}
列挙操作(同じ問題):
export enum Operation {
constant, // Double is an assosiative value, its like the assosiated value in the 'set' state of an optional.
preFixUnaryOperation,
postFixUnaryOperation,
binaryOperation,
equals
}
どのように使用する必要があり、スウィフト、 "閉鎖" で呼び出され、typescriptですで/ javascript?