При преобразовании Optional почему flatMap не создаёт вложенный Optional, в отличие от map?
База Hintsage
Swift Core
Типы, функции, структуры, классы и базовая семантика.
Практика
Вопросы: Swift Core
При повторной записи того же значения в наблюдаемое свойство определите порядок и содержание вывода:
struct Temperature {
var celsius: Int {
willSet { print("willSet", newValue) }
didSet { print("didSet", oldValue) }
}
}
var temperature = Temperature(celsius: 20)
temperature.celsius = 20
Объясните, вызываются ли наблюдатели, если значение фактически не изменилось.
Объясните механизм: чем метатип T.self отличается от метатипа, возвращённого функцией type(of:) для значения?
В проекте класс помечен ключевым словом «final»: какое ограничение на наследование гарантирует Swift?
Вам нужно сохранить конкретный тип результата метода клонирования при наследовании. Какую гарантию даёт Self в возвращаемом типе протокольного метода?
protocol Clonable {
func clone() -> Self
}
class Report: Clonable {
let title: String
required init(title: String) {
self.title = title
}
func clone() -> Self {
Self(title: title)
}
}
class AuditReport: Report {}
let copy = AuditReport(title: "A").clone()
print(type(of: copy))
Создаёт ли typealias в Swift новый тип или лишь другое имя существующего?
Вызов с оператором ?? содержит значение слева и выражение справа: когда Swift вычислит правую часть?
При использовании property wrapper в Swift что именно становится хранимым свойством экземпляра?
Объект класса хранит замыкание, которое обращается к этому же объекту: каким образом возникает цикл сильных ссылок и как его разорвать?
При передаче функции как значения в параметр, допускающий ошибки, почему обычная функция совместима с ним, но throwing-функция — нет с параметром без обработки ошибок?
Являются ли метки аргументов частью типа функции в Swift?
При инициализации класса свойство по умолчанию обращается к self: почему Swift запрещает это до завершения инициализации?
Разберите последствия: чем отличается переполнение обычного целочисленного сложения от переполнения с оператором wrapping в Swift?
В библиотеке класс объявлен как public или open: какое различие это создаёт для наследования из другого модуля?
Допустим, подкласс переопределяет унаследованное хранимое свойство, добавляя ему willSet и didSet. Какие наблюдатели сработают при изменении этого свойства через экземпляр подкласса?
К чему относится self внутри статического метода Swift?
В какой момент Swift разрешает присваивание хранимому свойству класса, объявленному как let, и что меняется после завершения designated-инициализатора?
Как трактуется сравнение значения NaN с самим собой в Swift?
Определите вывод программы и объясните, что происходит при создании перечисления из неизвестного исходного значения:
enum HTTPStatus: Int {
case ok = 200
case notFound = 404
}
let success = HTTPStatus(rawValue: 200)
let missing = HTTPStatus(rawValue: 201)
print(success == HTTPStatus.ok, missing == nil)
При передаче existential-значения протокола с associatedtype в generic-функцию почему Swift не может использовать его как конкретный тип, удовлетворяющий этому протоколу?
Показано 61–80 из 100