問題タブ [partial-functions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - Scala で別のオプションを使用して OrElse を取得する方法
foo1
オプションとオプションがあると仮定しましょうfoo2
:
foo2
when foo1
isの値を返すことができる演算子/関数はありNone
ますか?
上記getOrElseOption
は明らかに存在しません。このように sth を実行できることはわかっていますが、やや冗長で理解しにくいものです。
haskell - scanl1 は本当に部分的ですか?
Haskell wiki によると、scanl1
関数は部分的です。ただし、どの入力が下になるのかわかりません。リスト関数の場合、問題の入力が空のリスト ( for などhead
) または無限リスト ( for など) であることに慣れていますreverse
。ただし、scanl1
これらのタイプのリストの両方を正しく処理しているようです。これは実際には部分関数ですか?もしそうなら、底になる入力の例は何ですか?
scala - isDefinedAtを定義せずにScala PartialFunctionが機能するのはなぜですか?
FirstとSecondは同じように見えますが、なぜですか?
初め
2番
Scala コンパイラ
が部分からの生成でFirst{ case i:Int if i > 0 && i < 3 => i }
の実装形式に自動的に変換するためでしょうか。isDefinedAt
if i > 0 && i < 3
また、case i:Int if i > 0 && i < 3 => i
私が正しければ、Case クラスのパターン マッチングです。ただし、scala/src/library/scala/PartialFunction.scalaには、 の Case クラス定義はありませんPartialFunction
。
では、なぜこのケース クラス パターン マッチが機能するのでしょうか。
Scala コンパイラーは多くの暗黙的な作業をインテリジェントに行うと思いますが、何が起こっているのか、Scala コードの書き方を理解するのに混乱しています。
言語やコンパイラの仕様ではなく、Scala コードの構文と Scala のコードの書き方を理解するための参考文献があれば、提案してください。