169 похожих чатов

А зачем преобразовывать? Почему не просто тип?

17 ответов

12 просмотров

ибо могут скастить и поменять

Lev-Shagalov Автор вопроса
Alexandr ∨∧‾ Emelyanov
ибо могут скастить и поменять

Э... мы рассматриваем коллег как партизан, намеренно подрывающих устойчивость кода?

Lev Shagalov
Э... мы рассматриваем коллег как партизан, намерен...

ну контекст не известен) может это публичная либа?)

Lev-Shagalov Автор вопроса
Alexandr ∨∧‾ Emelyanov
ну контекст не известен) может это публичная либа?...

Окей, значит toMap/toList только для защиты от человеческого фактора? Если мы предполагаем, что это не либа и партизанить никто не будет - вызывать это не обязательно?

Lev Shagalov
Окей, значит toMap/toList только для защиты от чел...

Если каста не боитесь, можете не вызывать. В обратном случае преобразовать придётся.

Alexandr ∨∧‾ Emelyanov
ибо могут скастить и поменять

Я думаю, что закладывваться на любителей играть в рефлексию - так себе идея. Если захотят, все равно сломают

Alexandr ∨∧‾ Emelyanov
ну контекст не известен) может это публичная либа?...

Публичная либа имеет публичное API. Если кто-то ее хачит и ломает API, это проблема того, кто хачит

Lev Shagalov
Окей, значит toMap/toList только для защиты от чел...

боюсь toMap и toList вернут те же мутабельные коллекции скастенные в иммутабл

Alexandr ∨∧‾ Emelyanov
боюсь toMap и toList вернут те же мутабельные колл...

У меня тоже такое ощущение. Вообще, protective copy надо применять только когда оно реально нужно.

Lev-Shagalov Автор вопроса
Lev Shagalov
Ну вот а когда оно реально нужно?

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

Lev-Shagalov Автор вопроса
Lev Shagalov
А... Оно ж по ссылке будет меняться... Да...

Да. Но обычно это не страшно, потому что результат консистентен всегда. Я в последнее время стараюсь где это надо на выход отдавать не коллекцию, а Iterator/sequence/flow, который дает тебе по сути снапшот без оверхеда на защитное копирование. Его можно прочитать только один раз.

Alexander Nozik
Да. Но обычно это не страшно, потому что результат...

Так flow же отдает постепенно данные, или это не принципиально? Насчёт sequence - хорошая идея

Mr Fox
Так flow же отдает постепенно данные, или это не п...

если это List.toFlow, то почти ничем не отличается от Sequence

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта