有人可以告诉我这段Swift代码中的{_ in nil}是做什么的

时间:2017-06-19 02:17:13

标签: swift dictionary

我知道cos和{"cos(\($0))"}部分会发生什么,但我不明白{_ 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 个答案:

答案 0 :(得分:0)

由于@CodeDifferent提到{_ in nil}语法意味着:忽略传入此闭包的内容并始终返回nil。 考虑这个简单的函数,它给出了一个闭包作为输入。

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

输出等于输入:

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

无论输入是什么,输出都是1000:

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

无论输入是什么,输出都是nil:

// These are the same:

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

myFunc { _ -> Int? in nil
}