1. ホーム
  2. scala

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

また このブログの記事 を参照してください。