"Неявное преобразование из <тип кортежа> в <тип кортежа 2> требует временной ошибки" при передаче кортежа в качестве аргумента 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 ответа
Проблема в том, что в вашей переменной кортежа отсутствуют метки, присутствующие в функции. Замените его следующим:
var myTuple = (arg1: "bar", arg2: 42)
Проблема в том, что неявное преобразование требуется для
(String, Int)
чтобы соответствовать(arg1: String, arg2: Int)
- выполняя неявное приведение, компилятор получает временное значение, которое не может быть передано inout. Вот почему ошибка (несколько запутанно) говорит о неизменном значении.
У вас есть два варианта сделать это
Первый: делай так
var account3 = (name: "state bank personal", balance: 1000.00)
Или второе: смени метод и используй так
func desposit0(amount:Double,account:inout (String,Double))->(String,Double)
использовать: account.0 и account.1