Здравствуйте. Может ли мне кто-нибудь объяснить небольшой момент в переписки, касательно критики и предложений данного нововведедения switch-on-strings в 7 пакете Жабы, в 334 coin project 334 JSR ?
процитирую:
Now that we plan to have closures, do we still need strings-in-switch?
Won't a string-to-function map be about as fast (though maybe less
convenient)? I don't know what the use cases are for
strings-in-switch, but the feature already felt a bit low-benefit to
me, and seems even more so now with closures.
ссылка на источник
Что такое понятие closures, и почему в случае его реализации, задается вопрос, существует ли необходимость в данной опции-свичире ? Какая между ними связь, объясните для непонимающего. И так же на счет вопроса не будет ли string-to-function map не менее быстрым.
Может кто небольшое введение сделать для понимания данного коммента ? Буду благодарен.
Могу ошибаться, но мне кажется, здесь речь идет о замыканиях, т.е. лямбдах.
Пример, где switch
может быть заменен лямбда-функцией.
public static String caseOnString(String str) {
switch (str) {
case "hello":
return "world";
case "bye":
return "country";
default:
return "";
}
}
public static String mapOnString(String str) {
Function<String, String> map = s -> {
if (s.equals("hello"))
return "world";
if (s.equals("bye"))
return "country";
return "";
};
return map.apply(str);
}
Думаю, имели в виду следующее: если у нас есть переменная String str
, то вместо
switch (str) {
case "one":
System.out.println(1);
break;
case "two":
System.out.println(2);
break;
default:
System.out.println("?");
}
предлагали писать что-то вроде такого (closures - это замыкания, а в случае java - лямбды, хоть они и не полноценные замыкания):
Map<String, Runnable> switchMap = new HashMap<>();
switchMap.put("one", () -> System.out.println(1));
switchMap.put("two", () -> System.out.println(2));
switchMap.getOrDefault(str, () -> System.out.println("?")).run();
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пишу простенький раннер, движение объекта (того, кто бежит) симулирую сдвигом на определенное расстояние картинки на бэкграунде (фона)
Делаю лабиринтДвижение осуществляется по фрейму, в зависимости от значения в массиве map, где 1 - можно двигаться, 2 - стена
Выводит непонятные символы, не могу понять где и как нужно менять кодировку
Здравствуйте, возможно ли разработать приложение для Android которое бы создавало сессию ssh и к которой можно было подключиться по средствам...