f# では、次のより簡潔な同等のものを探しています。
myNumber >= 2 && myNumber <= 4
のようなものを想像します
myNumber >=< (2, 4)
このような操作はありますか?
ジョンの答えはまさにあなたが求めていたものであり、最も実用的な解決策です。しかし、これにより、演算子を定義して、通常の数学表記に近い構文を有効にできるかどうか疑問に思いましたa <= b <= c
。
そのような解決策の 1 つを次に示します。
let inline (<=.) left middle = (left <= middle, middle)
let inline (.<=) (leftResult, middle) right = leftResult && (middle <= right)
let inline (.<=.) middleLeft middleRight = (middleLeft .<= middleRight, middleRight)
1 <=. 3 .<=. 5 .<= 9 // true
1 <=. 10 .<= 5 // false
これに関するいくつかのコメント:
.
文字にしました.
は非常に慎重な選択であり、より好みの他のキャラクターに簡単に変更することはできません (たとえば、より良い見た目が好きな場合など1 <=@ 3 @<= 5
)。 F# コンパイラは、演算子記号の最初の文字に基づいて、演算子の結合性や優先順位を変更します。標準の左から右への評価/短絡が必要であり.
、これを有効にします。