В прошлой теме я как то упустил псевдонимы типов, подумал и решил дополнить
И так «Псевдонимы типов задают альтернативное имя для существующего типа». В частности такой псевдоним можно задать для кортежа, получится кортеж к которому можно обращаться по имени.
Пример:
class Class {
typealias ObjectType = (
text: String,
name: String
)
let obj1 = ObjectType("Hello", "Swift Book")
init() {
let obj2 = ObjectType(
text: "Hello",
name: "Swift Book"
)
}
}
let obj3 = Class.ObjectType("Hello", "Swift Book")
Задаём псевдоним для кортежа и obj1, obj2, obj3 - варианты его использования. Почти структура.
Можно пойти дальше и создать для ObjectType конструктор:
class Class {
typealias ObjectType = (
text: String,
name: String,
print: () -> ()
)
func Object(name: String) -> ObjectType {
var this: ObjectType!
this = (
text: "Hello",
name: name,
print: {
print(self)
print(this.text + " " + this.name)
}
)
return this
}
init() {
let obj = Object(name: "Swift Book")
obj.print()
}
}
Напоминает JavaScript Тем не менее, можно рассматривать как альтернативный вариант создания объектов. И плюс можно обратится в конструкторе к self