Cas*_*per 9 eclipse foreach templates loops
我是Eclipse的新手,我主要用于Java.我之前使用过IntelliJ Idea,它可以选择一个扩展Iteratable(Collection,List等)的变量,并生成一个正确的foreach循环.
我知道Eclipse使用foreach模板执行类似的操作,它会猜测要迭代的变量,但我无法使用所选变量将其与同一个变量相同.但是,如果变量不在当前范围内,如果Eclipse猜错了怎么办?
所以我想要做的是能够选择一个变量(或返回变量的函数)来实现Iterator并让它返回:
选择:
functionWhichReturnsList() (which returns List<TypeOfItemsInList>)
Run Code Online (Sandbox Code Playgroud)
结果:
for (TypeOfItemsInList item : functionWhichReturnsList()) {
${cursor}
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我通常按照以下步骤创建这样的代码:
调用该函数并使用Ctrl-1创建一个包含返回值的局部变量:
List<TypeOfItemsInList> list = functionWhichReturnsList()
Run Code Online (Sandbox Code Playgroud)
键入fore [Ctrl-space]以插入for循环(因为eclipse通常在构造循环时选择最接近的iterable):
List<TypeOfItemsInList> list = functionWhichReturnsList()
for (TypeOfItemsInList item : list) {
}
Run Code Online (Sandbox Code Playgroud)
通过将光标放在列表变量上并键入Alt + Shift + I来内联局部变量:
for (TypeOfItemsInList item : functionWhichReturnsList()) {
}
Run Code Online (Sandbox Code Playgroud)
它不是最佳的,但它的工作原理.
更新2:
在Eclipse 4.4 Luna(JDT)的新功能中,为此问题添加了QuickFix.这也可以用于数组,集合和映射(键集和值).
更新1
我最近发现了一个提供后缀代码完成的eclipse插件(https://github.com/trylimits/Eclipse-Postfix-Code-Completion).这是它对foreach循环的工作原理:
此外,该插件提供更有帮助的比赛:)
对于4.4之前的Eclipse:
我也有同样的问题,但我无法找到解决方案.所以,目前我执行以下步骤来获得所需的循环.
在[Ctrl-space]中选择foreach模板,我得到以下内容:
for (iterable_type iterable_element : iterable) {
}
Run Code Online (Sandbox Code Playgroud)
然后我执行双击iterable
并用方法替换它:
for (iterable_type iterable_element : functionWhichReturnsList()) {
}
Run Code Online (Sandbox Code Playgroud)
在下一步,只需单击functionWhichReturnsList()
并按Ctrl-1.Eclipse将建议将类型更改iterable_element
为TypeOfItemsInList
.这是希望你到最后:
for (TypeOfItemsInList iterable_element : functionWhichReturnsList()) {
}
Run Code Online (Sandbox Code Playgroud)
现在,您只需要找到一个合适的名称iterable_element
.只需双击它即可开始输入.