protocol ValueHolder {
}
struct A: ValueHolder {
var value = 5
}
var x: ValueHolder = A()
func f(a: inout A) {
a.value = 10
}
Я хочу использовать пропуск x для f. Является ли это возможным?Тип протокола быстрого ввода для структурирования и передачи как inout
Редактировать: Я понимаю весь персонал о семантике значений и параметрах inout. Проблема в том, что x
необходимо отправить в A
, и мне интересно, можно ли это сделать без его копирования (as
делает типизированную копию), так что я могу использовать f
по адресу x
.
Что касается компилятора, то 'x' имеет тип' ValueHolder' и не имеет ничего общего с 'A', поэтому вы не можете называть' f'. – luk2302
Еще один хороший пример для комментариев большего типа, чем хороших аннотаций типа. Удалите аннотацию типа 'x', затем вы можете вызывать' f (a: & x) 'и' x.value' prints 10 – vadian
Если вы объясните, почему вы хотите это сделать, может появиться альтернативное решение. –