This media is not supported in your browser
VIEW IN TELEGRAM
юзверь прислал такую проблему с ui флита, можете ли вы понять шо его не устраивает токо из гифки?
отгадка завтра
отгадка завтра
🤔1
Прототипное наследование было топ, до того как его решили впендюрить в си лайк язык со слабой типизацией.
Это было развитие идеи ООП, если все есть объект, и каждый объект принадлежит Класссу объектов, то к какому классу принадлежит класс, конечно же к MetaClass, а MetaClass? а его мы зациклим, его класс будет он сам, чтобы сломать рекурсию.
Ну это как то тупо, подумали в лаборатории Palo Alto и запилили Self язык без классов, по сути это был Smalltalk 2.0
Это было развитие идеи ООП, если все есть объект, и каждый объект принадлежит Класссу объектов, то к какому классу принадлежит класс, конечно же к MetaClass, а MetaClass? а его мы зациклим, его класс будет он сам, чтобы сломать рекурсию.
Ну это как то тупо, подумали в лаборатории Palo Alto и запилили Self язык без классов, по сути это был Smalltalk 2.0
gavr_sas
Прототипное наследование было топ, до того как его решили впендюрить в си лайк язык со слабой типизацией. Это было развитие идеи ООП, если все есть объект, и каждый объект принадлежит Класссу объектов, то к какому классу принадлежит класс, конечно же к MetaClass…
Такому типу наследования ну очень идет гуи.
Когда исполнив любое выражение ты буквально получаешь в руки объект результа.
Все объекты таблички, значением может быть что угодно, если вставим лямбду получим что у объекта есть метод, отпрототипимся, получим объект с тем же методом.
В каждом "объекте" поле в котором можно делать eval и из которого доступны поля этого объекта, то есть каждый объект как мини иде со своим скоупом.
На скриншотах пример выставления пятерки в дефолтное значение поля foo
Когда исполнив любое выражение ты буквально получаешь в руки объект результа.
Все объекты таблички, значением может быть что угодно, если вставим лямбду получим что у объекта есть метод, отпрототипимся, получим объект с тем же методом.
В каждом "объекте" поле в котором можно делать eval и из которого доступны поля этого объекта, то есть каждый объект как мини иде со своим скоупом.
На скриншотах пример выставления пятерки в дефолтное значение поля foo
https://codapi.org/
Нашел прикольную штуку, может когда нибудь заюзаю.
Как питон ноутбуки, только для всех языков, и без стейта, нужно скорее для документации и презентаций, можно выставить зависимость между сниппетами чтобы при запуске 3 сначала выполнились 1 и 2.
Нашел прикольную штуку, может когда нибудь заюзаю.
Как питон ноутбуки, только для всех языков, и без стейта, нужно скорее для документации и презентаций, можно выставить зависимость между сниппетами чтобы при запуске 3 сначала выполнились 1 и 2.
codapi.org
codapi: Interactive code examples
Embed executable code snippets directly into your product documentation, online course or blog post.
🔥1
Забавная история ишья автоматом закрывается если создавший ее чел не поставил в проект звездочку
https://github.com/daeuniverse/dae/issues/368
И разумеется в ридми репы есть подсчет звездочек
https://github.com/daeuniverse/dae/issues/368
И разумеется в ридми репы есть подсчет звездочек
😁3
Проектирую нуллабилити для языка
синтакс справка:
Изучаю как другие решаеют, вот 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 уже не нулл]
скоро буду менять хату, есть хороший вариант но на первом этаже, хмм, никогда на первом не жил, там до улицы буквально стеклянная дверца съезжающая дверца, все остальное тупа топ якие подводные интересно