Проектирую нуллабилити для языка
синтакс справка:
Изучаю как другие решаеют, вот Swift делает странновато,
У меня бы это было наверно как то так, потому что уже есть синтаксис лямбд такой же
Но зачем это это объявление переменной, если обычная проверка на нулл и так должна сужать тип?
-Потому что если переменная мутабельна, то делать это небезопасно, что если в другом потоке кто-то снова присвоит ей нулл? тогда внутри ифа произойдет NRE.
Так что вроде бы идея неплохая, и вложенную нулабилити покрывает
Так что украду этот синтаксис, он также супер упрощает резолвинг, не нужно ебаца с булевой алгеброй, например в котлине у нас
if (x != null && y != null) { x и y смарткастнулись к нон нулл}
а если бы было || то не смарткастнулись бы, и это еще самый простой вариант только, так что у меня будет свифтовая семантика с локальными переменными, токо не знаю стоит ли оставлять != null, у swift нету
синтакс справка:
x > 5 => x foo bar
// это у меня
if (x > 5) {
x.foo().bar()
}
Изучаю как другие решаеют, вот Swift делает странновато,
if let переменная = нуллабл, которая внутри тела ифа будет не нуллаблlet abc = null
if let variableName = abc { // If casting, use, eg, if let var = abc as? NSString
// variableName will be abc, unwrapped
} else {
// abc is nil
}
У меня бы это было наверно как то так, потому что уже есть синтаксис лямбд такой же
x = null
x != null => [nonNullX -> ...]
или
nonNullX = x != null => [...]
Но зачем это это объявление переменной, если обычная проверка на нулл и так должна сужать тип?
-Потому что если переменная мутабельна, то делать это небезопасно, что если в другом потоке кто-то снова присвоит ей нулл? тогда внутри ифа произойдет NRE.
Так что вроде бы идея неплохая, и вложенную нулабилити покрывает
if let money = person?.wallet?.money { money non null here }Так что украду этот синтаксис, он также супер упрощает резолвинг, не нужно ебаца с булевой алгеброй, например в котлине у нас
if (x != null && y != null) { x и y смарткастнулись к нон нулл}
а если бы было || то не смарткастнулись бы, и это еще самый простой вариант только, так что у меня будет свифтовая семантика с локальными переменными, токо не знаю стоит ли оставлять != null, у swift нету
if let w = person?.wallet {w ...}person wallet => [w -> w уже не нулл]
скоро буду менять хату, есть хороший вариант но на первом этаже, хмм, никогда на первом не жил, там до улицы буквально стеклянная дверца съезжающая дверца, все остальное тупа топ якие подводные интересно
Эплы внезапно выложили свою модель https://github.com/apple/ml-ferret
GitHub
GitHub - apple/ml-ferret
Contribute to apple/ml-ferret development by creating an account on GitHub.