スカラに論理的な意味を実装する可能性があるのだろうかと思っていました。 例えば:に翻訳スカラに暗黙の論理演算子を実装する
a implies b
:
!a || b
a
とb
はBoolean
に評価するいくつかの式です。
私は当初、以下で始めたが、それは関係なく、a
の値をa
とb
の両方を評価しますので、それは
implicit def extendedBoolean(a : Boolean) = new {
def implies(b : Boolean) = {
!a || b
}
}
間違ったアプローチです。正しい解決策は、a
が真の場合にのみb
と評価されます。
スカラでは、* nullary関数*は* call-by-name引数*と呼ばれています。 – ziggystar
真。私がリンクしているScalaのWebサイトのページでは、Scalaでは式をnullary関数に自動的に変換することで、「名前による評価」が実装されています。Skalaが言語機能を実装するのは、名前による呼び出しを使用する方法に留意するよりも、面白くて教育的だと思います。 – ellisbben
は、これが名前による呼び出しの場合であることを強調するために編集されています – ellisbben