- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
protected String createPublicCacheKey(String...keyElements) {
String initial = "public";
StringBuilder format = new StringBuilder();
format.append(initial);
for(int i=0;i<keyElements.length;i++) {
format.append(".%s");
}
return String.format(format.toString(), keyElements);
}
someone 27.06.2014 11:50 # −6
bormand 27.06.2014 12:14 # 0
guest 27.06.2014 14:07 # +4
roman-kashitsyn 27.06.2014 17:06 # 0
GQuark
kegdan 27.06.2014 14:24 # 0
guest 06.12.2014 04:14 # 0
guest 06.12.2014 04:26 # 0
kegdan 06.12.2014 10:36 # 0
bormand 06.12.2014 11:45 # 0
kegdan 06.12.2014 12:07 # 0
defecate-plusplus 06.12.2014 12:37 # +1
в крестах компилятор следит за const, а не мартышка
kegdan 06.12.2014 13:14 # 0
defecate-plusplus 06.12.2014 13:28 # +3
есть помеченные как константные
такие объекты отслеживаются компилятором, для них свои правила применения их методов и методов над ними, компилятор сильно тревожится, если ты пытаешься залезть к ним в карман
но если ты очень-очень хочешь, ты можешь написать дополнительные действия, которые позволят тебе задрать штанину, спустить носок, снять ружье с предохранителя и таки ебануть себе в ногу
но случайно этого не сделать
а в половине случаев в конце ещё окажется, что вместо оригинальной ноги ты задрал штанину на манекене, который и так собрались уже завтра выбросить
kegdan 06.12.2014 14:43 # 0
Я >> отчего же? Именно для это в дотнете строки и сделаны неизменяемыми
Аска >> В тех же крестах строки мутабельные. Что совершенно не мешает безопасно использовать их в качестве ключей.
Диффи >> в крестах компилятор следит за const, а не мартышка
В итоге - либо неизменяемость строк (иммутабельность или константы) либо следить что бы никто не положил мапу нахуй.
Я нихуя не понимаю в каком месте вы хотите сделать мну виноватым.
defecate-plusplus 06.12.2014 15:10 # +3
kegdan 06.12.2014 15:55 # −2
Тут какая то эпидемия? У меня такое ощущение, что если я зайду через год, и скажу что типа "да, так и есть, двоичный код состоит из 1 и 0" меня изобьют, обольют бензином и сожгут.
bormand 06.12.2014 16:00 # +1
Опасна ли эта мутабельность для мапы? Нет.
Нужна ли следящая мартышка? Нет. std::string - мутабельная строка? Да.
kegdan 06.12.2014 16:13 # 0
в плюсах нет аналогичной проблемы? (ну только со строками)
http://ideone.com/XAE6Z0
bormand 06.12.2014 16:19 # +1
Неа, нету. http://ideone.com/xokXst
> ну только со строками
Для любой фигни, ведущей себя как value type этой проблемы нету. Можно даже std::map<std::vector<std::queue<int>>, std::string> заюзать в качестве ключа для мапы. Но не нужно.
1024-- 06.12.2014 16:23 # 0
Как говорит выше Борманд, Для любой фигни, ведущей себя как value type этой проблемы нету.
bormand 06.12.2014 16:26 # 0
Зачем же так дословно портировать? :) Это эквивалентно std::map<myobj, int> map; А ближе к коду кегдана будут new и смартпоинтер.
1024-- 06.12.2014 16:38 # 0
Кстати, а штатными средствами (используя публичные методы, не залезая внутрь) можно погнуть std::map, подсунув объект Кегдана? Или только указатель/смартпоинтер/иной объект с указателем на что-то внутри?
Я попытался с обычным объектом, но у меня руки слабые: http://ideone.com/Fqb5kM.
defecate-plusplus 06.12.2014 16:45 # +1
сделай недетерминированное сравнение, и уникальность ключей в мапе пойдет по пизде
bormand 06.12.2014 16:50 # 0
1024-- 06.12.2014 16:56 # 0
defecate-plusplus 06.12.2014 17:04 # 0
да
1024-- 06.12.2014 17:38 # 0
Ты наркоман штоле? Погнул же как Кегдан у себя в C#, но не заметил.
http://ideone.com/06SKkz
guest 06.12.2014 17:41 # 0
1024-- 06.12.2014 17:44 # 0
1024-- 06.12.2014 16:03 # +2
Массивы уже порвались?
defecate-plusplus 06.12.2014 16:05 # 0
bormand 06.12.2014 16:13 # 0
kegdan 06.12.2014 16:14 # 0
1024-- 06.12.2014 15:12 # 0
> либо неизменяемость строк (иммутабельность или константы) либо следить что бы никто не положил мапу нахуй
Что значит "положить мапу нахуй"? Написать свою map<string, pituh> с возможностью изменить любой ключ (а значит - бесплатно создавать дубликаты) её пользователям?
Или тут про какие-то оптимизации и пирфомансе говорится? (положить == заDoSить) Неизменяемая строка => её можно закэшировать и свести к указателю => сравнивать 4-8 байт, а не 0-100500?
Lokich 27.06.2014 13:51 # 0
хотя все равно язык говно, там же нет вывода типов
kegdan 27.06.2014 14:25 # 0
guest 27.06.2014 14:43 # 0
kegdan 27.06.2014 14:47 # 0
guest 06.12.2014 01:44 # 0
guest 06.12.2014 04:11 # 0
kegdan 06.12.2014 10:37 # 0
guest 06.12.2014 17:42 # +1
guest 26.09.2014 00:00 # −1
guest 26.09.2014 20:37 # −1
guest 26.09.2014 21:41 # 0
guest 30.09.2014 20:04 # −2