根据我的理解,这是Java中的一条语句:
while((x % p == 0l) && (x > p)) x /= p;
如果是这样,为什么这是语法错误:
final AtomicLong subtotal = new AtomicLong(limit);
final long maxPrimeFactor = primeStream.takeWhile(p -> p * p <= limit)
.filter(p -> subtotal.get() % p == 0)
.peek(p -> while((subtotal.get() % p == 0) && (subtotal.get() > p)) subtotal.set(subtotal.get() / p)) // Syntax error here.
.dropWhile(p -> p != subtotal.get())
.findFirst()
.getAsLong();
这是不是语法错误。
final AtomicLong subtotal = new AtomicLong(limit);
final long maxPrimeFactor = primeStream.takeWhile(p -> p * p <= limit)
.filter(p -> subtotal.get() % p == 0)
.peek(p -> { while((subtotal.get() % p == 0) && (subtotal.get() > p)) subtotal.set(subtotal.get() / p)); } // No syntax error here.
.dropWhile(p -> p != subtotal.get())
.findFirst()
.getAsLong();
p->something
希望 something
是表达,而不是陈述。
p->{something}
希望 something
是陈述,或者更准确地说,是陈述列表。
参见:15.27。 Lambda 表达式
具体为 15.27.2。 Lambda 身体:
LambdaBody:
Expression
Block