• Какая разница в опционалах в Swift?

    Implicitly Unwrapped Optional, в целом, ведут себя как Optional. На самом деле, они преобразовываются к Optional при каждом удобном случае:

    let x: Int! = 42
    let y = x   // y has type Int?

    Есть два отличия: во-первых, можно привести IUO к non-optional типу:

    func f(_ arg: Int) { print(arg) }
    
    let x: Int! = 42
    
    let y: Int = x
    let z = x as Int
    f(x)

    Во-вторых, можно вызывать на такой переменной методы самого объекта. Если в IUO содержится nil, то приложение упадёт с соответствующим сообщением:

    struct Dog {
        func bark() { print("Woof!") }
    }
    
    let d: Dog! = Dog()
    d.bark()

    Применяются IUO, в основном для отложенной инициализации:

    class Foo {
        var x: Int!
    
        init() {
            // I can't setup x at this point :(
            x = nil
        }
    
        func setup(x newValue: Int) { x = newValue }
    
        func foo() {
            // I promise that setupX() will be called before
            // I will deal with x as if it was always present
            print(x * 2)
        }
    }

    Замечу, что, начиная со Swift 3, IUO - это вовсе не тип, а лишь атрибут переменной, который разрешает неявные преобразования с ней. "Под капотом" всё выглядит как-то так:

    let x: Int! = 42
    @implicitlyUnwrapped let x: Optional<Int> = .some(42)
    Ответ написан
    Комментировать
  • Что должен знать junior С#?

    Nipheris
    @Nipheris Куратор тега C#
    корпоративные приложения

    Поучите голый ADO.NET и какую-нибудь ORM-ку, да хотя бы EF. Еще можете хотя бы начать ASP.NET, вероятность попасть на него на первой работе достаточно высокая.

    финансы, банковская сфера

    Подтяните теорию по реляционным БД. Ведь какие финансы без транзакций!) Вы должны хотя бы знать о таких понятиях, как изоляция транзакций, представлять в общих чертах как на SQL можно сделать какую-нибудь выборку с агренированием. Никто конечно в здравом уме не даст джуниору непосредственный доступ к сколь-либо значащим данным, отражающим реальные денежные балансы, но ваша осведомленность пойдет вам на пользу, иначе рискуете клепать интерфейсики ближайшие несколько лет. А, ну да, выясните, почему нельзя вот так считать проценты по кредиту:
    float interestRate = 0.13 // ставка
    float interestSum = interestRate * sum;


    геймдев

    ну это отдельная история.. Несмотря на обилие высокоуровневых инструментов, не мешало бы знать основы графики (цветовые модели, граф. конвейер, что такое вершинный шейдер), алгоритмы на графах, популярные структуры данных и основы геометрии (без матриц никуда, хоть стреляй).

    И еще для всех направлений: станьте более-менее самостоятельным в вопросах деплоя. Вы должны в общих чертах представлять, что находится внутри дотнетовской сборки, как работает версионность и что может пойти не так. Ну и про NuGet я надеюсь вы уже знаете.
    Ответ написан
    1 комментарий
  • Как найти удалённую практику для начинающего python программиста?

    sim3x
    @sim3x
    while not is_person_working:
       Ходить на собеседования и узнавать, что нужно компаниям и людям
       Учить, то что они хотят не переставая ходить на собеседования
    Ответ написан
    3 комментария
  • Как посимвольно сравнить каждую цифру в числе?

    @onepavel
    Консультация и разработка мобильных приложений
    переведите число в строку,
    строка - это массив чаров
    гоняете массив любыми алгоритмами
    Ответ написан
    2 комментария
  • Курсы, статьи, лекции по регулярным выражениям?

    Shultc
    @Shultc
    RnD Developer
    Вот тут можете почитать: www.regular-expressions.info/

    А вот тут можете потренироваться в применении прочитанного: regexpal.com/
    Ответ написан
    Комментировать