我刚刚看到一篇关于Python循环的帖子:Trying to understand Python loop using underscore and input
有一种方法可以在没有“变量名”的情况下在python中循环:
for _ in range(10):
print("Hello world")
Java方法:
for (int _ = 0; _ < 10; _++) {
System.out.println("Hello world");
}
eclipse警告我:
'_'不应该用作标识符,因为它是保留的 来自源代码级1.8的关键字。
也许我应该坚持i
并写下
for (int i = 0; i < 10; i++) {
System.out.println("Hello world");
}
使用(可能)不必要的整数变量。
还有另一种方法来编写简单的java循环,比如python循环,可能更优雅吗?
答案 0 :(得分:4)
没有更高效或更优雅(IMO)的方式来表达Java中的循环。
然而:
_
的假设效率很可能是一种错觉。println
调用相比,我们讨论的是微小开销,以及导致这些问题的所有内容。还有一点。标识符_
在Java 8中是合法的,但它是一种明显的样式违规。在Java 9中,(我认为)它们将使它成为语法错误!!
答案 1 :(得分:1)
在Java 8+中,您可以使用IntStream
之类的内容,例如
IntStream.range(0, 10).forEach(i -> System.out.println("Hello, World"));
答案 2 :(得分:0)
根据帖子及其答案,&#39; _&#39;在一个python循环中是一个&#34;一次性&#34;变量,这意味着该值在循环中不重要/使用。
我认为你的java循环与你的python循环相同,&#39; _&#39;或者&#39;我&#39;并没有带来任何差异。
答案 3 :(得分:0)
也许辅助函数会做
IntConsumer c(Runnable f) {
return ($) -> f.run();
}
并使用
运行代码IntStream.range(0, 10).forEach(c(() -> System.out.println("hi")));
下行是,对于每种类型的消费者,您需要具有帮助函数,因为这不起作用,因为IntConsumer不是函数:
private <T1, T2> Function<T1, T2> c(Runnable f) {
return ($) -> { f.run(); return null; }
}