私は次のコードスニペットを見つけました:ScalaのforSomeキーワードは何ですか?
List[T] forSome { type T }
forSome
は方法のように見えますが、私の友人は、それがキーワードだ私に言いました。
私はそれを見つけましたが、forSome
に関するドキュメントはほとんど見つかりませんでした。それはどういう意味ですか、そしてどこでそれについての文書を入手できますか?
私は次のコードスニペットを見つけました:ScalaのforSomeキーワードは何ですか?
List[T] forSome { type T }
forSome
は方法のように見えますが、私の友人は、それがキーワードだ私に言いました。
私はそれを見つけましたが、forSome
に関するドキュメントはほとんど見つかりませんでした。それはどういう意味ですか、そしてどこでそれについての文書を入手できますか?
forSome
キーワードは、Scalaの実在型を定義するために使用されます。 Scala glossaryのページには、その内容が説明されています。 Scalaのドキュメントで詳細を説明する場所を見つけることができなかったので、hereは、Googleがどのように役立つかを説明したブログ記事です。
更新:では、存在タイプの正確な定義を見つけることができますが、それはかなり密集しています。
私がリンクしている投稿のいくつかを要約すると、実在するタイプは、何かを操作したいが、そのタイプの詳細を気にしないときに便利です。たとえば、配列を操作したいがを気にしない、アレイの種類:
def printFirst[T](x : Array[T]) = println(x(0))
ができます:あなたは、メソッドの型変数で行うことができます
def printFirst(x : Array[T] forSome {type T}) = println(x(0))
場合によっては型変数を追加したくないかもしれません。また、型変数にバインドを追加することができます。
def addToFirst(x : Array[T] forSome {type T <: Integer}) = x(0) + 1
また、私がこの例を得たところであるthis blog post参照してください。
私はScalaを知らないが、あなたの質問は私の関心を集めて、グーグルを始めた。
私はScala's changelogであることが見つかりました:
「新しいキーワードに
forSome
を使用して実存型を定義することができるようになりまし実存タイプがQ
は値の シーケンスであり、および/またはフォームT forSome {Q}
を持っています。
いくつかの情報は、[Scala Spec](http://www.scala-lang.org/docu/files/ScalaReference.pdf)の第26ページ –
の現在の仕様:http://www.scala -lang.org/files/archive/spec/2.11/03-types.html#existential-types –
@JanekBogucki上記のリンクは機能しません。 – jpcooper
http://www.scala-lang.org/news/roadmap-next.html - 「一部の構文が削除されました」 –
forSomeは、「Don Giovanni」リリースでの削除の予定です:https://www.scala-lang.org/news/roadmap-next.html –