"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. Это также может использоваться для массивов, коллекций и карт (наборов ключей и значений).

enter image description here

обновление 1

недавно я нашел плагин eclipse, который обеспечивает завершение кода postfix (https://github.com/trylimits/Eclipse-Postfix-Code-Completion). Вот как это работает для цикл foreach:

enter image description here

кроме того, плагин обеспечивает более полезные соревнования:)

для 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 сделает все остальное.