[解決済み] Scalaの「コンテキストバウンド」とは何ですか?
2022-02-16 12:01:28
質問
Scala 2.8の新機能の1つにコンテキスト・バウンズがあります。コンテキストバウンドとは何か、どこで役に立つのか?
もちろん、まず検索してみました(そして、例えば これ しかし、本当に明確で詳細な情報は見つかりませんでした。
どのように解決するのですか?
は見つかりましたか? この記事 ? 配列の改良の中で、新しいコンテキストバウンド機能を取り上げています。
一般に、型パラメータに
コンテキストバウンド
は、次のような形式です。
[T: Bound]
に展開されます。
T
という型の暗黙のパラメータと一緒に
Bound[T]
.
メソッドを考えてみましょう。
tabulate
を適用した結果から配列を形成するものです.
0から与えられた長さまでの数値の範囲に対して、与えられた関数fを実行します。Scala 2.7までは、tabulateは以下のようになります。
は次のように記述します。
def tabulate[T](len: Int, f: Int => T) = {
val xs = new Array[T](len)
for (i <- 0 until len) xs(i) = f(i)
xs
}
Scala 2.8では、これはもはや不可能です。
Array[T]
. この情報を提供するために
ClassManifest[T]
を暗黙のパラメータとしてメソッドに渡すことができます。
def tabulate[T](len: Int, f: Int => T)(implicit m: ClassManifest[T]) = {
val xs = new Array[T](len)
for (i <- 0 until len) xs(i) = f(i)
xs
}
省略形として
コンテキストバウンド
は、型パラメータ
T
となります。
def tabulate[T: ClassManifest](len: Int, f: Int => T) = {
val xs = new Array[T](len)
for (i <- 0 until len) xs(i) = f(i)
xs
}
関連
-
[解決済み] A の値をキーとして Seq[A] を Map[Int, A] に変換する方法は?
-
[解決済み] Scala 無名クラスでextendsを使用する方法
-
[解決済み] Scalaのリターン
-
[解決済み] Scala vs. Groovy vs. Clojure [終了しました]。
-
[解決済み] Scalaのcase classとclassの違いは何ですか?
-
[解決済み] Scalaのapply関数とは何ですか?
-
[解決済み】Scalaにおける中括弧と括弧の正式な違い、また、どのような場合に使用すべきなのか?
-
[解決済み】Scalaのyieldとは何ですか?
-
[解決済み] 縮小、折りたたみ、スキャン(左/右)?
-
[解決済み] Scalaのタイプラムダとその利点とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Scala forallの例?
-
[解決済み] Spark - Sparkでパーセンタイルを計算する方法は?
-
[解決済み] Scalaの''って何?
-
[解決済み] ScalaのバージョンをScala本体から取得するにはどうしたらいいですか?
-
[解決済み] Scalaでファイル全体を読む?
-
[解決済み】Scala 2.8のコレクション・ライブラリは「歴史上最も長い遺書」のケースか?[クローズド] Scala
-
[解決済み】Scalaの記号演算子にはどんな意味があるの?
-
[解決済み】Scalaのコンテキストとビューバウンドとは何ですか?
-
[解決済み] Scalaは、コレクションをMap-by-keyに変換する最良の方法ですか?
-
[解決済み] ScalaのManifestとは何か、いつ必要なのか?