首页 > 解决方案 > 错误:传递给不带参数的调用的参数

问题描述

import UIKit

var arrs = [String]()
func addVars(fn: @autoclosure () -> ()) {
    arrs = Array(repeating: "", count: 3)
    fn()
    print(arrs[1])
    }
addVars(fn: arrs.insert("Nice to meet you.",at:1))

上面的代码运行良好。如果我将代码替换为以下内容:

var arrs = [String]()
func addVars(fn: @autoclosure () -> ()) {
arrs = Array(repeating: "", count: 3)

print(fn())
}

addVars(fn: arrs.count)

我确实收到此错误:参数传递给在 addVars(fn:arrs.count) 处不接受任何参数的调用

标签: iosswift

解决方案


func addVars(fn: @autoclosure () -> ()) 

在此函数中,您将函数作为参数传递。arrs.count是整数,所以它会给出一个错误,而是arrs.insert("Nice to meet you.",at:1)类型(),所以它会执行。

更新我怎么知道某些东西是否属于 () 类型?

如果一个函数没有返回任何东西,它的返回类型是Voidie, ()

arrs.remove(at: 0) // this return an array by removing the value at 0 position. Hence, its return type is [String] not Void

然而,

arrs.insert("Nice to meet you.",at:1) // this just adds value and returns nothing, hence Void. 

在 Xcode 中,当你调用一个函数时,Xcode 也会显示函数的返回类型。见下图。您可以使用它来了解返回类型。

在此处输入图像描述

此外,请参阅本文以了解有关函数及其返回类型的更多信息。


推荐阅读