传递带有重载的函数将无法编译

时间:2018-09-19 18:29:27

标签: swift functional-programming overloading

我试图将一个函数传递给闭包或另一个函数,但是由于模棱两可,有一些重载会阻止编译。我想知道这是否真的可以做到?

这是我要实现的目标的一个简单示例-

let closure: (UILabel, String, ((CGFloat) -> (UIFont))) -> () = { (label, text, createFont) in
    label.text = text
    label.font = createFont(20)
}

let systemFont = UIFont.systemFont  // won't compile - Ambiguous use of 'systemFont'
let boldSystemFont = UIFont.boldSystemFont // this is fine, no overloads

closure(myLabel, "Some text", systemFont)
closure(myOtherLabel, "More text", boldSystemFont)

是否可以指定我想要的重载?在SO或Google上进行的大量搜索都无法为我解答。

1 个答案:

答案 0 :(得分:1)

也许你是说:

    let systemFont = UIFont.systemFont(ofSize:)