“从<tuple type =”“>到<tuple type =”“2 =”“>的隐式转换在将元组作为inout参数传递时需要一个临时的”错误“

时间:2018-04-18 08:29:26

标签: swift tuples inout

这是我的代码:

var myTuple = ("bar", 42)

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

foo(&myTuple)

此行出现以下错误:

foo(&myTuple)
  

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

2 个答案:

答案 0 :(得分:3)

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

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

Explanation by @Hamish:

  

问题是(String, Int)需要隐式转换才能与(arg1: String, arg2: Int)匹配 - 通过执行隐式强制,编译器会以临时rvalue结束,然后无法传递给它。这就是错误(有点令人困惑)谈论不可变值的原因。

答案 1 :(得分:0)

  

您有两种选择

首先:喜欢那样

Yii::$app->language='nl';

或者第二:改变方法和使用

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

使用:account.0和account.1