В пробной версии & ошибка Я нашел некоторые факты о кортежах и изменчивости в Swift, но хотел бы узнать о реальных правилах. Рассмотрим такой код:Каковы правила для tuple mutability?
class T
{
var f : String = "hello"
}
let a = T();
let b = (f : "hello", "");
a.f = "world";
b.f = "world";
println(a.f)
println(b.f)
a
ведет себя как фиксированные ссылки (вы можете изменить любой элемент, который, как объекта, просто не главное задание). Так что это как readonly
в C#.
Но b
ведет себя скорее как постоянное значение - вышеуказанный код не компилируется. Можно сказать, что let
(или var
) применяется ко всем членам кортежа.
Но это догадывается с моей стороны - так что возвращаюсь к моему вопросу. Каковы правила для кортежей и их изменчивости?
Возможный дубликат [Is Swift Pass By Value или Pass By Reference] (http://stackoverflow.com/questions/27364117/is-swift-pass-by-value-or-pass-by-reference) – matt
@ matt, чтобы дать реальный ответ на мой вопрос, я должен был бы знать, если кортеж определяется как тип значения ('struct') или reference one (' class'), но эту информацию я также не могу найти. – greenoldman
@greenoldman, как указано в руководстве Swift, кортежи представляют собой сложные типы данных. Поэтому, определяя его как 'let', он делает его и его« членов »неизменным. –