如何在 Java 中创建方法来创建新的循环类型?
How can I create a method in Java to create a new loop type?
我正在努力创建一些 Java 方法来更快、更高效地编写代码,现在我正在尝试制作一个简单的循环,我称之为“重复”。
它将像这样工作:
repeat(number of times to repeat) {
code to be repeated
}
例如:
repeat(3) {
System.out.println("hi")
}
会显示:
hi
hi
hi
如何制作这样的 method/function? 我还需要它作为嵌套循环工作。
repeat(3) {
System.out.println("hi")
}
- Java 不支持此语法。如果您想通过语法支持这一点,请尝试另一种支持闭包的语言
- 另一种方法你可以试试,Java可以用lambda实现
public static void main(String[] args) {
repeat(3, () -> {
System.out.println("hi");
});
}
public static void repeat(int count, Runnable function) {
for(int i = 0; i < count; i++) {
function.run();
}
}
如果你真的想避免所有的 for 循环,你可以使用 @math-chen 解决方案的递归版本:
public static void repeat(int count, Runnable function) {
if (count > 0) {
function.run();
repeat(count - 1, function);
}
}
由于递归调用是在方法的最后,这个“tail-call”理论上可以优化为不使用任何额外的堆栈,但 JVM 可能不会这样做。 (实验表明它不会)
我正在努力创建一些 Java 方法来更快、更高效地编写代码,现在我正在尝试制作一个简单的循环,我称之为“重复”。
它将像这样工作:
repeat(number of times to repeat) {
code to be repeated
}
例如:
repeat(3) {
System.out.println("hi")
}
会显示:
hi
hi
hi
如何制作这样的 method/function? 我还需要它作为嵌套循环工作。
repeat(3) {
System.out.println("hi")
}
- Java 不支持此语法。如果您想通过语法支持这一点,请尝试另一种支持闭包的语言
- 另一种方法你可以试试,Java可以用lambda实现
public static void main(String[] args) {
repeat(3, () -> {
System.out.println("hi");
});
}
public static void repeat(int count, Runnable function) {
for(int i = 0; i < count; i++) {
function.run();
}
}
如果你真的想避免所有的 for 循环,你可以使用 @math-chen 解决方案的递归版本:
public static void repeat(int count, Runnable function) {
if (count > 0) {
function.run();
repeat(count - 1, function);
}
}
由于递归调用是在方法的最后,这个“tail-call”理论上可以优化为不使用任何额外的堆栈,但 JVM 可能不会这样做。 (实验表明它不会)