Информация об изменениях

Сообщение Re[11]: Как объяснить падение популярности .net? от 11.12.2019 19:50

Изменено 11.12.2019 20:05 zverjuga

Re[11]: Как объяснить падение популярности .net?
Здравствуйте, Flem1234, Вы писали:

F>Можешь хотя бы в нескольких пунктах сформулировать, чем свифт лучше? Ну, например, шарп лучше некоторого условного языка X

F>А что может свифт?

пример выше показал то, что умеет делать свифт. и делает он следующие вещи

1. приводит объект из одного типа в другой с проверкой
2. поиск совпадения из заданного диапазона
3. вызов кода в главном потоке

если абстрагироваться от конкретных типов и классов, то переписанный пример на свифте будет следующим

guard let foo = someObject as? ConcreteClass,
    (200...299).contains(foo.someValue) else {
        DispatchQueue.main.async {
            self.authenticationDidFail = true
        }
        return
    }


переписанный код на сишарпе будет таким
var foo = someObject as ConcreteClass;
var array = Enumerable.Range(200, 299).ToArray();
if (foo == null || !array.Contains(foo.someValue)) {
    // запустить в главном потоке код
    // self.authenticationDidFail = true
}



то есть, конструкция
guard let foo = ...


в данном примере одновременно объединяет в себе и приведение типов и проверку на нуль. в данном пример + еще и проверку на совпадение в заданном диапазоне. и если любое из двух условий не было выполнено, то выполняется блок else, где из главного потока вызвается
self.authenticationDidFail = true


я уже и не помню, как в сишарпе одной строкой запустить код в главном потоке, потому опустил эту часть.

и это только одна конкретная мелочь, коих в свифте, конечно же, можно привести полно. когда проект большой, то таких мелочей вагон и ты начинаешь чувствовать их мощь и удобство. потому каждый раз говорить одно и то же реально задолбало.
Re[11]: Как объяснить падение популярности .net?
Здравствуйте, Flem1234, Вы писали:

F>Можешь хотя бы в нескольких пунктах сформулировать, чем свифт лучше? Ну, например, шарп лучше некоторого условного языка X

F>А что может свифт?

пример выше показал то, что умеет делать свифт. и делает он следующие вещи

1. приводит объект из одного типа в другой с проверкой
2. поиск совпадения из заданного диапазона
3. вызов кода в главном потоке

если абстрагироваться от конкретных типов и классов, то переписанный пример на свифте будет следующим

guard let foo = someObject as? ConcreteClass,
    (200...299).contains(foo.someValue) else {
        DispatchQueue.main.async {
            self.authenticationDidFail = true
        }
        return
    }


переписанный код на сишарпе будет таким
var foo = someObject as ConcreteClass;
var array = Enumerable.Range(200, 299).ToArray();
if (foo == null || !array.Contains(foo.someValue)) {
    // запустить в главном потоке код
    // self.authenticationDidFail = true
}



то есть, конструкция
guard let foo = ...


в данном примере одновременно объединяет в себе и приведение типов и проверку на нуль. в данном пример + еще и проверку на совпадение в заданном диапазоне. и если любое из двух условий не было выполнено, то выполняется блок else, где из главного потока вызвается
self.authenticationDidFail = true


опять так, сравниваем синтаксис создания списка по заданному диапазону в свифте
(200...299)


против

Enumerable.Range(200, 299)


я уже и не помню, как в сишарпе одной строкой запустить код в главном потоке, потому опустил эту часть.

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