【发布时间】:2011-01-18 14:15:20
【问题描述】:
有没有办法通过这些函数中的数组代码重用迭代:
public static double[] ln(double[] z) {
// returns an array that consists of the natural logarithm of the values in array z
int count = 0;
for (double i : z){
z[count] = Math.log(i);
count += 1;
}
return z;
}
public static double[] inverse(double[] z) {
// returns an array that consists of the inverse of the values in array z
int count = 0;
for (double i : z){
z[count] = Math.pow(i,-1);
count += 1;
}
return z;
}
【问题讨论】:
-
不是真的...Java 不是 Lisp ;)
-
@Gugussee:是的,你可以。在 List 中,您可以通过语言结构来做到这一点,但在 Java 中,您可以使用 OO 设计模式来做到这一点。
-
请注意,通过这种方式,更改也会反映在给定的数组参数中...换句话说,返回它是不必要的,或者您应该在更改之前创建给定数组参数的克隆.
-
@cherouvim:您说的是也使用反射或命名您的常用方法 "doIt"(而不是“log”或“inverse”),并且在任何如果是这样,那将是一种可能比疾病更糟的“治疗”。我说的更像是一个有趣的评论,而不是对 Java 的批评;)
-
@Gugussee:策略模式中没有使用反射。一切都是类型安全的,并使用可靠的 OO 原则。另外,我不是在批评你的评论,只是说这是可能的。
标签: java function operator-overloading code-reuse