再帰的列挙型についてもっと学びたいと思っています。ここで素早い再帰的列挙型
は私のコードです:
enum Operation {
case Unary((Double) -> Double)
case Binary((Double, Double) -> Double)
indirect case Combined(Operation, Operation)
}
let x = 7.0
let y = 9.0
let z = x + y
let plus = Operation.Binary{$0 + $1}
let squareRoot = Operation.Unary{sqrt($0)}
let combined = Operation.Combined(plus, squareRoot)
switch combined {
case let .Unary(value):
value(z)
case let .Binary(function):
function(x, y)
case let .Combined(mix):
mix(plus, squareRoot)
}
にはどうすればいいplus
、その後squareRoot
操作を次々に実行することができますか?
私はこのエラーを取得しておく:.Unary
と.Binary
で
Cannot call value of non-function type (Operation, Operation)
を、 '.Combined'の背後にある意図は何ですか?私。 .Combined(plus、squareRoot)で何が起こると思いますか? – courteouselk