logoalt Hacker News

g947otoday at 11:29 AM4 repliesview on HN

Care to explain the last one? The presentation is weird and stupid, but I don't see any obvious (technical) issue other than the missing bracket on the left, unlike the first two


Replies

marginalia_nutoday at 12:20 PM

Iterative example doesn't iterate, mismatches parentheses and brackets. Because of this, the iterative example is shorter and simpler than the "short & simple" lambda example.

Lambda example is to the best of my parsing ability this:

  apples.stream()
    .filter(a -λ a.isRed());  // <-- note semicolon
    .forEach(giveApple);
Should be

  apples.stream()
    .filter(a -> a.isRed()) // or Apple::isRed
    .forEach(a -> giveApple(a)); // or this::giveApple
It's also somewhat implied that lambdas are faster, when they're generally about twice as slow as the same code written without lambdas.
show 1 reply
carlobtoday at 11:47 AM

The 'long' code for checking apples is shorter, but it's missing the external for loop. So I guess you could say it's not (ahem) an apples to apples comparison.

raphmantoday at 11:51 AM

I'm not OP but:

- missing ")" on the left side

- extra "}" on the right side

- the apples example on the right side ("Short code") ist significantly longer than the equivalent "Long code" example on the left side (which might also be because that code example omits the necessary for loop).

- The headings don't provide structure. "Checking Each Apple" and "Only Red Apples!" sounds like opposites, but the code does more or less the same in both cases.

donkey_brainstoday at 11:46 AM

No “for” loop in the example purportedly showing an iterative approach.

Not mentioning the pain of debugging the streaming solution is also a little disingenuous.