Ябло (Свежее) / Говнокод #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, +34)

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

0

  1. 1
  2. 2
  3. 3
  4. 4
if let attrs = profile?.attrs {
    let json = NSKeyedUnarchiver.unarchiveObject(with: attrs as Data) as? [String:AnyObject]
    textField.text = String(format: "%@", (json?["number"] as? String)!)
}

Кто пишет на Swift – разделит всю боль поддержки такого кода.

pavelsmelovsky pavelsmelovsky, (Updated )

Комментарии (7, +7)

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

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
func sumOf(_ numbers: Int...) -> Int {
    var sum = 0
    for number in numbers {
        sum += number
    }
    return sum
}

func average(numbers: Int...) -> Double {
    var sum = sumOf(numbers)
    
    return Double(sum) / Double(numbers.count)
}

// ERROR at line 10, col 21: cannot convert value of type '[Int]' to expected argument type 'Int'
//    var sum = sumOf(numbers)

Смысл жёстко типизированных Variadic arguments ускользает от меня.

Предлагается как синтаксический сахар на замену [Type] (экономия на скобках?), не работает в неожиданных местах без объявления войны.
Зато Эппл убрала в третьем Свифте раскрытие кортежа в качестве аргументов функций: https://github.com/apple/swift-evolution/blob/master/proposals/0029-remove-implicit-tuple-splat.md

Здесь играем, здесь не играем, здесь рыбу заворачивали

negr negr, (Updated )

Комментарии (7, +7)

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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
self.output?.didFinishToLogin(response!)
                    
let when = DispatchTime.now() + 0.5
DispatchQueue.main.asyncAfter(deadline: when) {
    self.proceedWithSuccessLogin(response: response!)
}

Ждем пока в другом потоке что-то инициализируется, иначе ничего работать не будет. На вопрос автору, откуда взялось полсекунды, был ответ, что этого даже много - там мол все за микросекунды происходит.

maxp maxp, (Updated )

Комментарии (2, +2)

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

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
В данном случае наговнокодили создатели свифта.

В Си был оператор for
for (var i = subviews.count - 2; i >= 0; i -= 1) 

Но в Swift 3 его выпилили и вместо него изобрели богомерзкий stride:

for i in (subviews.count - 2).stride(through: 0, by: -1) 

through - до какого значения должен дойти цикл, включительно. Если вместо него написать to, то будет не включительно. Интуитивно понятно, не так ли? (сарказм). 
Ну и до кучи, в случае со stride нужно больше печатать. 

Я уже молчу, что ++ и -- посчитали небезопасными и выпилили. Наверно, потому, что некоторые дауны путаются с префиксной и постфиксной версией. теперь надо писать += 1 и -= 1. Очень наглядно, по сравнению с ++ и --

gorsash gorsash, (Updated )

Комментарии (26, +26)

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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
______ 
                                  |______|
 _____ _    _____  __   __      _     ___ 
|_   _| |  |_   _| \ \ / /     | |   / / |
  | | | |__  | |    \ V / _   _| |  / /| |
  | | | '_ \ | |    /   \| | | | | / / | |
  | | | |_) || |_  / /^\ \ |_| | |/ /  | |
  \_/ |_.__/\___/  \/   \/\__, | /_/   | |
                           __/ | |     | |
                          |___/|_|     |_|

                                   ______ 
                                  |______|
 _____ _    _____  __   __      _     ___ 
|_   _| |  |_   _| \ \ / /     | |   / / |
  | | | |__  | |    \ V / _   _| |  / /| |
  | | | '_ \ | |    /   \| | | | | / / | |
  | | | |_) || |_  / /^\ \ |_| | |/ /  | |
  \_/ |_.__/\___/  \/   \/\__, | /_/   | |
                           __/ | |     | |
                          |___/|_|     |_|

Anal_teacher Anal_teacher, (Updated )

Комментарии (10, +10)

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

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
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        
        let rootViewController = LAMainViewController(nibName: nil, bundle: nil)
        let navigationController = LANavigationController()
        
        let gradientLayer = CAGradientLayer()
        
        gradientLayer.colors = [UIColor.blackColor().CGColor, UIColor(hexString: "330033", alpha: 1)!.CGColor]
        gradientLayer.locations = [0, 1]
        gradientLayer.frame = window!.frame

        navigationController.viewControllers = [rootViewController]
        
        window!.rootViewController = navigationController
        window!.makeKeyAndVisible()
        window!.layer.insertSublayer(gradientLayer, atIndex: 0)
        
        return true
    }

давайте слой зафигачим на окно

grampe grampe, (Updated )

Комментарии (15, +15)

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

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
var orderStatus: OrderStatus {
        
        switch status {
            
        case "исполнено":
            return .Finished
        case "Закрыт":
            return .Finished
        case "просрочено":
            return .DeadlinePassed
        default:
            return .InProgress
            if control.deadline.timeIntervalSinceNow < 0.0 {
                return .DeadlinePassed
            } else {
                return .InProgress
            }
        }
    }

Потрачено

Johniie Johniie, (Updated )

Комментарии (2, +2)