我刚刚在JavaFX中解决了Project Euler中的第一个问题,以获得它的乐趣,并想知道哪些块表达式实际上有用?为什么它们优于功能?是因为范围缩小了吗?少写?性能
这是欧拉的例子。我在这里使用了一个块,但我不知道它是否真的有意义
// sums up all number from low to high exclusive which are divisible by a or b
function sumDivisibleBy(a: Integer, b: Integer, high: Integer) {
def low = if (a <= b) a else b;
def sum = {
var result = 0;
for (i in [low .. <high] where i mod a == 0 or i mod b == 0) {
result += i
}
result
}
}
块在这里有意义吗?
答案 0 :(得分:1)
嗯,不,不是真的,它看起来像额外的复杂性,没有真正的好处。尝试删除sum变量和块,您将看到代码仍然有效。
一般来说,当您想要创建匿名范围而不是将代码分解为函数时,块表达式非常有用,大多数情况下您应该创建函数。