ScalaのforSomeキーワードは何のためにあるのか?
2023-10-19 07:39:50
質問
以下のコードスニペットを見つけました。
List[T] forSome { type T }
は
forSome
はメソッドのように見えますが、友人がキーワードだと教えてくれました。
についてググってみましたが、ほとんどドキュメントがありませんでした。
forSome
. これは何を意味するのでしょうか、そしてどこでそれについての文書を入手できますか?
どのように解決するのですか?
この
forSome
キーワードはScalaで実存的な型を定義するために使われます。このScalaの
用語集
のページで説明されている。Scalaのドキュメントの中で、これらを詳しく説明している場所を見つけることができませんでした。
はこちら
は、私がGoogleで見つけた、それらがどのように有用であるかを説明するブログ記事です。
更新: 実存的な型の正確な定義については Scala 仕様 で正確な定義を見ることができますが,かなり密です.
リンク先の投稿をいくつか要約すると、実存型は何かに対して操作をしたいが、その中の型の詳細については気にしない場合に便利である。たとえば、配列に対して操作したいが どのような を気にしない。
def printFirst(x : Array[T] forSome {type T}) = println(x(0))
というように、メソッドの型変数で行うこともできます。
def printFirst[T](x : Array[T]) = println(x(0))
のように記述しますが、場合によっては型変数を追加したくないかもしれません。また、型変数にバインドを追加することもできます。
def addToFirst(x : Array[T] forSome {type T <: Integer}) = x(0) + 1
また このブログの記事 を参照してください。
関連
-
[解決済み] Scalaで「:+」は何を意味するのか
-
[解決済み] Scalaのオブジェクトとクラスの違い
-
[解決済み] Scalaのapply関数とは何ですか?
-
[解決済み] Scalaで'type'キーワードが何をするのか理解する。
-
[解決済み】Scalaはどこでimplicitを探すのか?
-
[解決済み] Any、AnyVal、AnyRef、Objectの関係と、Javaコードでのマッピングについて教えてください。
-
[解決済み] Scalaでリストを2つのフィールドでソートするには?
-
[解決済み] Scalaのcaseクラスを宣言することのデメリットは何ですか?
-
[解決済み] タプルのリストをマップに変換する (重複するキーに対処する?)
-
[解決済み] ScalaTestでカスタム失敗メッセージを表示するには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 単純な case class の順序を定義する簡単な慣用的方法
-
[解決済み] Scalaでmapを使用してインデックスを受け取るにはどうしたらいいですか?
-
[解決済み] Scalaのアクター:受信と反応
-
[解決済み] Scalaで、リストから重複を取り除くにはどうしたらいいですか?
-
[解決済み] ScalaにおけるNull/Nothing/Unitの使用法
-
[解決済み] sbtのヒープサイズを設定するには?
-
[解決済み] に似た三項演算子。
-
[解決済み] Scalaで複数の値をパターンマッチさせるには?
-
[解決済み] Map操作におけるタプルのアンパッキング
-
[解決済み] ScalaでCurryする2つの方法、それぞれのユースケースは?