2017-06-19 6 views
1

私はcosと{"cos(\($0))"}の部分で何が起こるのか分かりますが、{_ in nil}の部分で何が起こるか分かりません。誰かが、このスウィフトコードで{_ in nil}が何をしているのか教えてください。

enum Operation { 
    case nullaryOperation(() -> Double,() -> String) 
} 

var operations: Dictionary<String,Operation> = [ 

    "cos" : Operation.unaryOperation(cos, {"cos(\($0))"}, {_ in nil}) 

    ] 

    func performOperation(_ symbol: String) { 

     if let operation = operations[symbol] { 

      switch operation { 


      case .nullaryOperation(let function, let description): 

       accumulator = (function(), description(), nil) 
      } 
     } 
    } 
+1

単項nullaryOperationの代わりの操作 –

+0

クロージャに関する言語ガイドのセクションを読む – Alexander

+3

'_ in nil'は"このクロージャに渡されたものを無視し、常に 'nil'を返します。 –

答えて

0

@CodeDifferentは{_ in nil}構文を説明したように意味:このクロージャに渡されたものは何でも無視して、常にnilを返します。
入力としてクロージャを与えるこの単純な関数を考えてみましょう。

func myFunc(inputClosure: (arg: Int?) -> Int?){ 
    var num = inputClosure(arg: 2) 
    print(num) 
} 

出力は入力に等しい:

myFunc { (arg) -> Int? in 
    return arg 
} 

どんなに入力が出力されている何千されています。関係なく入力が何であるか、出力がゼロではありません

myFunc() { _ -> Int? in 
    return 1000 
} 

// These are the same: 

myFunc { (arg) -> Int? in nil 
} 

myFunc { _ -> Int? in nil 
} 
関連する問題