ios - 错误:传递给不带参数的调用的参数
问题描述
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) 处不接受任何参数的调用
解决方案
func addVars(fn: @autoclosure () -> ())
在此函数中,您将函数作为参数传递。arrs.count
是整数,所以它会给出一个错误,而是arrs.insert("Nice to meet you.",at:1)
类型()
,所以它会执行。
更新:我怎么知道某些东西是否属于 () 类型?
如果一个函数没有返回任何东西,它的返回类型是Void
ie, ()
。
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 也会显示函数的返回类型。见下图。您可以使用它来了解返回类型。
此外,请参阅本文以了解有关函数及其返回类型的更多信息。
推荐阅读
- google-cloud-storage - 使用没有云函数的 GCS 创建事件触发 Dag
- javascript - 网络重新连接后如何从 offline.html 中恢复
- angular - 以角度动态创建表格
- javascript - 这是匹配 javascript 中 15,000 个 URL 主机名的最有效方法吗
- python-3.x - 如何在python中实现nc命令?
- javascript - React 问题 - 您如何控制网格中特定“图块”的状态?
- javascript - 在for循环中使用变量
- r - 如何在 r 中更改 biplot 的加载标签?
- python - 某些运营商的电话号码没有收到来自我的 Python 代码的 SMS 消息?
- node.js - 不能在模块 babel 之外使用 import 语句