問題タブ [partialfunction]

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.

0 投票する
2 に答える
475 参照

scala - コンパイルエラーが発生するのではなく、実行時にマップスローに部分関数を提供するのはなぜですか?

これが明白である場合はお詫びしますが、私はscalaに慣れていないため、次のコードで2つの予期しない動作が発生しています:

1) 文字列が変更されておらず、数値が 1 ずつ増加するコレクションを取得することを期待していましたが、代わりにエラーが発生しました。

2) このcase i: Int => i + 1構文は、Int 用に定義された部分関数を表していると思います。しかし、 map は total 関数を使用しているように見えますが、なぜこれがコンパイルされるのでしょうか? コンパイラが私を助けてくれる方がいいのではないでしょうか? 実行時例外をコンパイル時例外に移動することを常にお勧めします。

0 投票する
3 に答える
621 参照

scala - 部分関数の「case」キーワードを理解する

私は Scala を初めて使用し、その構造をデコードしようとしています。パターン マッチングについて学びました。構文は Java の switch ステートメントに似ています。

このコードは非常に明白で読みやすいです。私はかなり明白で明確な部分関数に出くわしました。

部分関数は、与えられる可能性のあるすべての入力値に対して答えを提供しない関数です。

私が混乱してcaseいるのは、次のような部分関数の本体で使用することです:

caseがステートメントなしでどのように使用されるか、Scala によってどのように解釈されるか、どのように読み取られるか、メソッドなのか、クラスなのか、それとも別の構成要素なのかがわかりません。ステートメントなしmatchで使用できる他の方法は何ですか?casematch

編集:

私はこのケースをいじってみましたが、まだわかりません。例えば

これはどのように作動しますか?

これを試すとエラーが発生します

部分関数以外の場所で使用されている一致のないケースはありますか?