1. ホーム
  2. scala

[解決済み] Scalaの代入が、代入された値ではなく、Unitで評価される動機は何ですか?

2023-06-13 10:17:16

質問

Scalaの代入が、代入された値ではなく、Unitで評価される動機は何でしょうか?

I/Oプログラミングでよくあるパターンは、このようなことをすることです。

while ((bytesRead = in.read(buffer)) != -1) { ...

しかし、これはScalaでは不可能です、なぜなら...

bytesRead = in.read(buffer)

...はbytesReadの新しい値ではなく、Unitを返します。

関数型言語から省くには興味深いことのように思えます。 なぜそうされたのかが不思議です。

どのように解決するのですか?

私は、代入が単位ではなく、割り当てられた値を返すようにすることを提唱しました。 Martin と私はそれについて何度も行き来しましたが、彼の主張は、95% の時間でそれをポップ オフするためだけにスタック上に値を置くことは、バイト コードの無駄であり、パフォーマンスに悪影響を与えるというものでした。