这是我的代码:
var myTuple = ("bar", 42)
func foo(_ bar: inout (arg1: String, arg2: Double)) {
[...]
}
foo(&myTuple)
我收到此行的以下错误:
foo(&myTuple)
无法将不可变值作为 inout 参数传递:从“(String,Double)”到“(arg1:String,arg2:Double)”的隐式转换需要临时
实际问题是您的元组变量缺少函数中存在的标签。将其替换为以下内容:
var myTuple = (arg1: "bar", arg2: 42)
问题是 a 需要进行隐式转换才能与 a
(String, Int)
匹配(arg1: String, arg2: Int)
- 通过执行隐式强制,编译器最终会得到一个临时右值,然后无法将其传入输出。这就是为什么错误(有点令人困惑)谈论不可变值的原因。
你有两个选择来做到这一点
第一:这样做
var account3 = (name: "state bank personal", balance: 1000.00)
或第二:改变方法并像那样使用
func desposit0(amount:Double,account:inout (String,Double))->(String,Double)
使用: account.0 和 account.1