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

Привет. Возможно ли в Koltin сделать switch case по строкам,

который будет сравнивать ссылки, а не строки?
Есть ли где-то объяснение как работает switch case по строкам в kotlin (идеально в android)?

17 ответов

15 просмотров

Разве что ифом.

Скорее нет, но можно сделать свою обёртку, которая в equals/hashCode будет сравнивать ссылки. Но вообще очень сомнительная затея, зачем вам это?

В kotlin, как и в Java строки не имеют глобальной identity, поэтому сравнивать их по ссылкам абсолютно бессмысленно

Alexander Nozik
В kotlin, как и в Java строки не имеют глобальной ...

Эм. Т.е. сравнивать конечно очень странно, но не совсем честно говорить, что у строк нету identity: fun main() { val a = "abc" val b = java.lang.String("abc") as kotlin.String println(a == b) //true println(a === b) //false }

Alex Levin
Эм. Т.е. сравнивать конечно очень странно, но не с...

Она не гарантируется. JVM может константы инлайнить

Alex Levin
Эм. Т.е. сравнивать конечно очень странно, но не с...

К примеру ваш же пример: https://pl.kotl.in/lPlLqTtG6

Alexander Nozik
Она не гарантируется. JVM может константы инлайнит...

new гарантированно (по JLS) создаёт новый объект, и если потянуться к его identity, никто его не заинлайнит

Alexander Nozik
К примеру ваш же пример: https://pl.kotl.in/lPlLqT...

Наличие пула строк (из-за которого действительно будет ссылка иногда совпадать) не означает, что identity нету. Т.е. да, тот же new тебе всегда новую строку выплюнет.

Alex Levin
Наличие пула строк (из-за которого действительно б...

В последнем докладе Елизаров назвал это по-моему локальной идентичностью.

Nikita-Kulikov (Old) Автор вопроса
Alexander Nozik
В kotlin, как и в Java строки не имеют глобальной ...

В случае если это одна строка, почему нет?

Nikita Kulikov (Old)
В случае если это одна строка, почему нет?

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

Nikita Kulikov (Old)
Перформанс?

Ух, тогда точно бросайте эту затею

Nikita Kulikov (Old)
Почему?

Потому что вы с этой "оптимизации" ничего не выиграете

Nikita Kulikov (Old)
Почему?

Я написал почему. Это сравнение уже оптимизируется в JVM. Лучше вы не сделаете точно.

Nikita Kulikov (Old)
Почему?

уже давно всё за вас оптипимизировали

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
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
Карта сайта