2017-11-01 3 views
-2
private enum Operation { 
     case BinaryOperation((Double, Double) -> Double) 
     case UrinaryOperation((Double) -> Double) 
    } 
    let plus = Operation.BinaryOperation({$0 + $1}) 
    let minus = Operation.BinaryOperation({$0 - $1}) 
    let multiply = Operation.BinaryOperation({$0 * $1}) 
    let divide = Operation.BinaryOperation({$0/$1}) 


    plus(3.0,2.0) 

はしかし、私は次のエラーを得た:列挙型と閉鎖組み合わせ

MyPlayground.playground:5:13:エラー:非関数型の値を呼び出すことはできません '操作' プラス(3.0,2.0) ~~~~^

+1

単語に簡略化することができ


注意はない「urinari」... – Sulthan

+0

定義が正しい、しかし、列挙型のケースはなりません、「単項」であります魔法のように機能。関連する値(クロージャー)にアクセスし、そのクロージャーを呼び出す必要があります。 – Sulthan

+0

乾杯、貧しい人々を許してください – leonshi

答えて

0

あなたがやろうとしている何のための正しい構文は次のとおりです。

if case let Operation.BinaryOperation(operation) = plus { 
    operation(3.0, 2.0) // results in 5.0 
} 

あなたが列挙型の関連する値を取得する必要があります。あなたの閉鎖が

let plus = Operation.BinaryOperation(+) 
let minus = Operation.BinaryOperation(-) 
let multiply = Operation.BinaryOperation(*) 
let divide = Operation.BinaryOperation(/) 
+0

@leonshiこれで問題が解決したら、答えの左側にあるチェックマークをクリックしてください。それはあなたの質問が解決されたことを人々に知らせます。 – rmaddy

関連する問題