"Surround with" - шаблон в Eclipse: foreach
Я новичок в Eclipse, который я использую в основном для Java. Ранее я использовал идею IntelliJ, в которой можно выбрать переменную, которая расширяет итерационный (коллекция, список и т. д.), и она создает правильный цикл foreach.
Я знаю, что Eclipse делает что-то подобное с шаблоном foreach, где он угадывает, какую переменную перебирать, но я не могу получить то же самое с выбранной переменной. Но что, если переменная не находится в текущей области и что если Затмение угадывает неправильно?
Итак, то, что я пытаюсь сделать, - это выбрать переменную (или функцию, которая возвращает переменную), которая реализует итератор, и вернуть ее:
выбор:
functionWhichReturnsList() (which returns List<TypeOfItemsInList>)
результат:
for (TypeOfItemsInList item : functionWhichReturnsList()) {
${cursor}
}
какие идеи?
4 ответов
обычно я создаю такой код, выполнив следующие шаги:
вызовите функцию и используйте Ctrl-1 для создания локальной переменной с возвращаемым значением:
List<TypeOfItemsInList> list = functionWhichReturnsList()
введите fore[Ctrl-space] для вставки цикла for (так как eclipse обычно выбирает ближайшую итерацию при построении цикла):
List<TypeOfItemsInList> list = functionWhichReturnsList()
for (TypeOfItemsInList item : list) {
}
встроить локальную переменную, поставив курсор на переменную списка и набрав Alt+Shift+I:
for (TypeOfItemsInList item : functionWhichReturnsList()) {
}
Это не оптимально, но это завод.
обновление 2:
В Eclipse 4.4 что нового в Луне (JDT) для этой проблемы было добавлено QuickFix. Это также может использоваться для массивов, коллекций и карт (наборов ключей и значений).
обновление 1
недавно я нашел плагин eclipse, который обеспечивает завершение кода postfix (https://github.com/trylimits/Eclipse-Postfix-Code-Completion). Вот как это работает для цикл foreach:
кроме того, плагин обеспечивает более полезные соревнования:)
для Eclipse до 4.4:
у меня также есть та же проблема, но я не смог найти решение. Итак, на данный момент я выполняю следующие шаги, чтобы получить желаемый цикл.
fore[Ctrl-space] и выберите шаблон foreach, я получаю следующее:
for (iterable_type iterable_element : iterable) {
}
затем я выполняю двойной щелчок на iterable
и замените его методом:
for (iterable_type iterable_element : functionWhichReturnsList()) {
}
на следующем шаге просто нажмите на кнопку functionWhichReturnsList()
и нажмите Ctrl-1. Eclipse предложит изменить тип iterable_element
to TypeOfItemsInList
. Это хочу, чтобы вы получите в конце:
for (TypeOfItemsInList iterable_element : functionWhichReturnsList()) {
}
теперь вам просто нужно найти собственное имя для iterable_element
. Просто дважды щелкните по нему и начните печатать.
насколько я знаю, Eclipse не поддерживает это так, как вы описываете.
Если Eclipse не находит нужную переменную, вы можете использовать ключ табулятора для итерации через заполнители в шаблоне foreach. В точке итерации eclipse покажет вам список итераций,которые вы можете выбрать.
вы, вероятно, не можете сделать это в eclipse, но введите for
и нажмите Ctrl-Space
дважды вы увидите всплывающее меню шаблоны кода. Затем вы можете выбрать functionWhichReturnsList()
в нужном месте и Eclipse сделает все остальное.