Ябло (Свежее) / Говнокод #23638 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
open class Converter {
    init() { }
    func convert<T, U>(from: T) -> U {
        return self.convert(from: T.self)
    }
    
    private func convert(from: MyClass1) -> MyClass2 {
        return MyClass2(value: from.value)
    }
    
    private func convert(from: MyClass2) -> MyClass1 {
        return MyClass1(value: from.value)
    }
}

let converter = Converter()
let mC1 = MyClass1(value: 10)
let mC2 = MyClass2(value: 30)

let mc2_1: MyClass2 = converter.convert(from: mC1)
let mc1_1: MyClass1 = converter.convert(from: mC2)

So deep, too recursion

Запостил: Desktop Desktop, (Updated )

Комментарии (34) RSS

  • class MyClass1 {
    var value: Int
    init(value: Int) {
    self.value = value
    }
    }

    class MyClass2 {
    var value: Int
    init(value: Int) {
    self.value = value * 2
    }
    }

    если шо
    Ответить
  • Я не понял нихуя, это генерики или крестошаблоны?
    Ответить
    • Это Свифтовые генерики. Бесполезны как и любые другие генерики.

      Кстати, вопрос на засыпку: можно ли сделать в крестах variadic template parameters так, чтобы для каждого typename была сгенерирована перегрузка некоторой функции?
      Ответить
        • Ого, спасибо.
          Выглядит как сильное колдунство.

          А с использованием только одной структуры это возможно сделать?

          Надо ещё проверить, можно ли так забабахать абстрактный класс
          Ответить
          • > одной структуры
            Скорее всего нет, миксины в крестах только через наследование эмулируются...

            З.Ы. Вот метаклассы завезут лет через 10-20 - там можно будет.
            Ответить
            • И выпилят половину стандарта! Оставят описание метаклассов и реализацию фич языка, описанную, как метаклассы.

              В итоге у нас будет сколько языков в одном? Сейчас есть: С-с-классами, препроцессор, шаблонная метушня, язык описания концептов, добавят ещё рефлексию (со своим синтаксисом) и метаклассы. С++ — набор языков для создания своего идеального говноязыка.
              Ответить
              • > И выпилят половину стандарта
                Может его хоть прочитать будет реально... А то сейчас только корейские задроты могут полностью прочесть и осознать стандарт.
                Ответить
                • >А то сейчас только корейские задроты могут полностью прочесть и осознать стандарт

                  Полностью прочесть - это возможно.

                  Но вот "полностью осознать", это сможет только великий дзенский мудрец. Всю жизнь он будет курить Святой Стандарт в попытках полностью осознать Его божественность.
                  Ответить
                        • Требования ISO: вся формальная документация платная. Поэтому и делают последний публичный черновик стандарта максимально приближённым к стандарту.
                          Ответить
                          • Што? Нахуя? Нахуя тогда делать стандарт на язык платным?
                            Ответить
                            • Поясняю для особо одарённых: чтобы сделать стандарт более-менее официальным, его нужно публиковать через ISO. ISO забирает права на распространение и запрещает раздавать стандарт бесплатно. НО! На черновики этот запрет не распространяется. Поэтому, чтобы обойти копирастию, Комитет делает официальный стандарт неотличимым от последнего черновика.
                              Ответить
                              • Сам ты одаренный. Может я неправильно выразился. Нахера стандартизировать ЯП таким анальным стандартом? Неужели нет ничего получше?
                                Ответить
                                • А, это чтобы хоть как-то организовать процесс стандартизации. У ИСО уже налаженый процесс, региональные организации, какой-никакой авторитет.
                                  Ответить
                                  • А зачем региональные организации? Как RFC без них обходится?
                                    Ответить
                              • Это наебалово какое-то, откровенно говоря. Я, как человек ни разу не открывающий стандарт, пошёл его гуглить. Откуда мне знать что нужно искать черновики?
                                Ответить
              • >С++ — набор языков для создания своего идеального говноязыка.

                Да всё сведётся к какому-то абстрактному шаблонному лиспохаскелю с метушиными макросами и их реализацией для обратной поддержкой всей питушни начиная с 1970х.
                Ответить
        • >NSt7__cxx1112basic_stringIcSt11char_tra itsIcESaIcEEE

          Пиздец. Это внутри так обычная строка называется?
          Кресты пробивают дно за дном.
          Ответить
          • Она переименовывается так компилятором. Так она называется тоько в бинарнике. Типичный ГЦЦшный манглинг:
            N - имя в неймспейсах
            St - ::std:: - первая часть имени, использует специфическое сокращение
            7__cxx11 - inline namespace, используется в libstdc++ чтобы включать фичи С++11, когда надо. Гцц использует паскалестроки, длина в начале
            12basic_string - название собственно класса
            l - шаблонные параметры дальше, эквивалентно < в нормальном коде
            c - char, ещё одно сокращение гцц
            St - ::std::, опять
            11char_traits - имя класса char_traits
            l - начинаются шаблонные параметры
            c - char
            E - Закончилось описание предыдущего типа (char_traits)
            Sa - ::std::allocator - сокращение
            l - шаблонные параметры
            c - char
            E - закончилось описание allocator
            E - закончилось описание basic_string
            E - закончилось описание типа вообще.

            Как можно заметить - всё очень просто!
            Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8