将函数赋值给变量时出错

时间:2017-06-02 19:27:46

标签: swift

我的代码简单如下:

var println = print;
println("test");

它给了我错误:missing argument for parameter #2 in call。我添加了更多的论点:

println("test",".","\n");

它仍然给我同样的错误。为什么会这样?

2 个答案:

答案 0 :(得分:1)

以下是public func print(_ items: Any..., separator: String = default, terminator: String = default) 功能的定义:

items

当您获得对它的引用时,您丢弃了命名参数,因此所有输入都被视为Any...的元素,因为separator不是预定义的参数量。在此定义中,无法提供terminatorprint

她是Swift看到的函数类型:

printlnenter image description here {{1}}: enter image description here

答案 1 :(得分:0)

除非你有某种非常具体的理由需要这样做,否则这应该会以更加迂回的方式实现所需的功能:

func println (_ items: Any..., separator: String = " ", terminator: String = "\n") {
    for item in items {
        print(item, separator: separator, terminator: "")
    }
    print(terminator, separator: "", terminator: "")
}
println("test")
println("test",".","\n")