Форум программистов, компьютерный форум CyberForum.ru

Множества (SET) протоколов - Swift

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Swift Отправка HTTP (не HTTPS) запроса в Swift 2.0 с использованием NSURLSession http://www.cyberforum.ru/swift/thread1597560.html
Доброго времени суток. Возникла проблема с отправкой POST запроса по http. Проблема в том, что несмотря на request.HTTPMethod = "POST" и <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> или
Swift Http request Здравствуйте. Как получить ответ от сервера по url, без всяких асинхронных конструкций? Да, я знаю что нужно все подобные операции делать асинхронно, но мне нужно послать 10 запросов по очереди и если для каждого писать код в блоках получается очень длинная и не читаемая простыня. Поискал информацию - везде говорят, что можно только асинхронно, но как тогда поступают в ситуациях похожих на мою? http://www.cyberforum.ru/swift/thread1593331.html
Swift Как из одного View Controller передать переменную в другой
Как в swift 1.2 передать переменную из одного View Controller в другой, пробовал через segue но ничего не получается, переменная все равно остается nil. У меня в первом View Controller находится форма входа, там парсится json и одну переменную после парсинга нужно передать в другой View Controller. Версия программы XCode 6.4
Swift Textfield деление
Есть два текстфилда, нужно сделать так, что бы по нажатию кнопки введенное число в первый текстфилд делилось на число введенное во второй текстфилд, и результат выводился в отдельный лэйбл. Помогите пожалуйста
Swift Проверка качества пароля http://www.cyberforum.ru/swift/thread1579044.html
Сильно не пинайте, вторую неделю изучаю программирование. 6 проверить пароль на надежность от 1 до 5 a) если пароль содержит числа +1 b) символы верхнего регистра +1 c) символы нижнего регистра +1
Swift NSString в Int Возможно ли вообще перейти от NSString к Int? Если да, то подскажите, каким образом? подробнее

Показать сообщение отдельно
Vorona
Peace 2 all shining faces
666 / 528 / 44
Регистрация: 05.03.2010
Сообщений: 1,271
02.12.2015, 10:10     Множества (SET) протоколов
Во-первых, где вы видели, что это легко решается? в каких языках?
Во-вторых, можете ли вы создать Set<Hashable>? Нет? Я так и думал.
В-третьих, если вы хотите научиться тру протокол-ориентированному программированию, то посмотрите видео об этом с WWDC 2015.

Hashable протокол наследуется от Equatable, который в свою очередь является протоколом с "Self requirement", т.е. он у себя ссылается на Self, что делает дженерик типы которые его используют (вроде Set) - homogeneous а не heterogeneous, что в свою очередь значит, что они (дженерик типы вроде Set) могут работать только с одним и тем же типом. Не просто с любым типом, поддерживающим этот протокол, а только с каким-то одним (либо это будет Int, либо String либо еще что-то, но не как не Int и String вместе).
Т.е. грубо говоря, если вы хотите чтобы Int был Equatable, значит вы должны определить функцию, где левое и правое значение являются типа Int (или Self, т.к. Int: Equatable)
надеюсь так понятно?

т.е., с тех пор как тип Hashable имеет Self requirement, а использующие его дженерики - homogeneous, вам надо объявлять Set с конкретным типом, который имплементирует либо Hashable протокол, либо ваш протокол Pr, который в свою очередь наследуется от Hashable.

Этот пример сработает, т.к. протокол AProto не имеет Self requirement
Objective-C
1
2
3
4
5
6
7
protocol AProto {}
 
class Clazz<AProto> {}
 
protocol BProto: AProto {}
 
let a = Clazz<BProto>()
А вот этот пример выдаст ошибку "Protocol 'YProto' can only be used as a generic constraint because it has Self or associated type requirements" , т.к. у него присутствует Self requirement

Objective-C
1
2
3
4
5
6
7
8
9
protocol XProto {
    func exec(a: Self)
}
 
class Clazz<XProto> {}
 
protocol YProto: XProto {}
 
let a = Clazz<YProto>()
P.S. ссылка на видео https://developer.apple.com/videos/play/wwdc2015-408/
P.P.S. эта тема поднимается на 10:43, но советую все же с начала до конца посмотреть
 
Текущее время: 02:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru