2

这是我的代码:

var myTuple = ("bar", 42)

func foo(_ bar: inout (arg1: String, arg2: Double)) {
    [...]
}

foo(&myTuple)

我收到此行的以下错误:

foo(&myTuple)

无法将不可变值作为 inout 参数传递:从“(String,Double)”到“(arg1:String,arg2:Double)”的隐式转换需要临时

4

2 回答 2

3

实际问题是您的元组变量缺少函数中存在的标签。将其替换为以下内容:

var myTuple = (arg1: "bar", arg2: 42)

@Hamish 的解释:

问题是 a 需要进行隐式转换才能与 a(String, Int)匹配(arg1: String, arg2: Int)- 通过执行隐式强制,编译器最终会得到一个临时右值,然后无法将其传入输出。这就是为什么错误(有点令人困惑)谈论不可变值的原因。

于 2018-04-18T08:35:11.107 回答
0

你有两个选择来做到这一点

第一:这样做

var account3 = (name: "state bank personal", balance: 1000.00)

或第二:改变方法并像那样使用

func desposit0(amount:Double,account:inout (String,Double))->(String,Double)

使用: account.0 和 account.1

于 2018-04-18T08:45:40.590 回答