Size: a a a

CODE BLOG / Чат

2021 October 12

4

4g in CODE BLOG / Чат
Его просто можно пропустить при вызове метода (если память не изменяет) но имхо это туже перебор будет вместе с nullable Boolean
источник

SS

Steel Sword in CODE BLOG / Чат
Нет, для всех типов
источник

P

Phantom in CODE BLOG / Чат
В шарпе есть две штуки
источник

P

Phantom in CODE BLOG / Чат
точнее
источник

P

Phantom in CODE BLOG / Чат
T? будет разным для структур и классов
источник

4

4g in CODE BLOG / Чат
Просто в <> конструкции можно использовать только классы, потому Boolean и передать null, в Optional - ну хз...
источник

P

Phantom in CODE BLOG / Чат
Для структур, компиль заменит T? на Nullable<T>, для классов, просто будет статический анализ и compile-time проверка
источник

SS

Steel Sword in CODE BLOG / Чат
В питоне Optional[T] означает, что значение либо T либо null.
Но статическая типизация в питоне прикручена сбоку, и защищает только в IDE.
В расте Option<T> это enum со значениями Option::Some(T) и Option::None и до Т можно добраться только внутри if'а или местного аналога switch'а с проверкой Some тут или None.

В джаве чтобы чтобы сделать Object<T> придётся T превратить в тяжёлый объект и держать в куче.
В расте же
struct Foo<T> {
   field: T,
}
весит ровно столько, сколько весит Т, в enum наверное еще байт добавится чтобы различать, какой тут вариант.
Поэтому Option<bool> весит примерно [один байт на OptionVariant]+[один байт на bool], т.е. это очень экономно.
источник

P

Phantom in CODE BLOG / Чат
Типо так?
источник

P

Phantom in CODE BLOG / Чат
источник

P

Phantom in CODE BLOG / Чат
источник

P

Phantom in CODE BLOG / Чат
@Steel_Sword хочешь прикол?
источник

P

Phantom in CODE BLOG / Чат
Крч
источник

P

Phantom in CODE BLOG / Чат
Как оказалось, в шарпе
источник

P

Phantom in CODE BLOG / Чат
T? (где T struct) синтаксический сахар для Nullable<T>
источник

P

Phantom in CODE BLOG / Чат
Но
источник

P

Phantom in CODE BLOG / Чат
Nullable<T> varName = null; тоже сахар
источник

P

Phantom in CODE BLOG / Чат
Который превращается в
Nullable<T> varName = new Nullable<T>();
источник

yp

yield programmer in CODE BLOG / Чат
А че у 1с настолько плохая поддержка , что они выпустили пакеты только rpm и deb, а для arch нет
источник

P

Phantom in CODE BLOG / Чат
А в свою очередь, Nullable<T> varName = new Nullable<T>(); тоже сахар
источник