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

Сообщение Re[17]: Как объяснить падение популярности .net? от 12.12.2019 12:40

Изменено 12.12.2019 12:56 zverjuga

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

M>Они просто не осилили ни нормальный if (if не умеет делать проверку на nil)


ты в своем уме? никто тебе не мешает делать эту проверку
if x != nil {
    x!.description // только тут придется использовать принудительное извлечение
    или
    x?.description // эти два примера в данном конкретном случае практически равносильны
}

guard тебя избавляет от принудительного излечения значения из оптиональной переменной, так как он уже это сделал + проверка на нуль
guard let x = x


можно вместо него использовать обычный let. в зависимости от ситуации используются либо let, либо guard, смотря что нужно
if let x = x {
    x.description
}


M>Да даже Java с x.filter(x => x > 10).orElseThrow(...) для Optional'ов лучше и адекватнее этого убожества.


ну это вообще капец. оказывается, что лучше использовать фильтр, чем просто lete
x.filter(x => x > 10).orElseThrow(...) // тут еще проверки на нуль не хватает
или
let x = x where x > 0 {
}
Re[17]: Как объяснить падение популярности .net?
Здравствуйте, Mamut, Вы писали:

M>Они просто не осилили ни нормальный if (if не умеет делать проверку на nil)


ты в своем уме? никто тебе не мешает делать эту проверку
if x != nil {
    x!.description // только тут придется использовать принудительное извлечение
    или
    x?.description // эти два примера в данном конкретном случае практически равносильны
}

guard тебя избавляет от принудительного излечения значения из оптиональной переменной, так как он уже это сделал + проверка на нуль
guard let x = x


можно вместо него использовать обычный let. в зависимости от ситуации используются либо let, либо guard, смотря что нужно
if let x = x {
    x.description
}


M>Да даже Java с x.filter(x => x > 10).orElseThrow(...) для Optional'ов лучше и адекватнее этого убожества.


ну это вообще капец. оказывается, что лучше использовать фильтр, чем просто lete
x.filter(x => x > 10).orElseThrow(...) // тут еще проверки на нуль не хватает
или
let x = x where x > 0 {
}



let и guard
1. гарантируют, что x не нулевая. то есть после них ты можешь использовать x без опасений, что там может оказаться нуль и избавить от дополнительных проверок
2. производят принудительное извлечение из оптиональной переменной в новую переменную, которая далее уже и используется

проверку на нуль можно делать и при помощи обычного if, только он делает только одну проверку, но не извлекает значение из оптионала. то есть при if тебе все равно где то придется завести новую переменную и в нее скопировать значение