タグ付けされた質問 「for-comprehension」

5
for-内包表記からflatMap / Mapへの変換と混同される
MapとFlatMapを理解していないようです。私が理解していないのは、for-incomhensionがmapとflatMapへのネストされた呼び出しのシーケンスであるということです。次の例は、Scalaの関数型プログラミングの例です def bothMatch(pat:String,pat2:String,s:String):Option[Boolean] = for { f <- mkMatcher(pat) g <- mkMatcher(pat2) } yield f(s) && g(s) に翻訳する def bothMatch(pat:String,pat2:String,s:String):Option[Boolean] = mkMatcher(pat) flatMap (f => mkMatcher(pat2) map (g => f(s) && g(s))) mkMatcherメソッドは次のように定義されます。 def mkMatcher(pat:String):Option[String => Boolean] = pattern(pat) map (p => (s:String) => p.matcher(s).matches) そして、パターンメソッドは次のとおりです: import java.util.regex._ def pattern(s:String):Option[Pattern] …


4
理解のためにScalaでミスマッチを入力する
この構造がScalaで型の不一致エラーを引き起こすのはなぜですか? for (first <- Some(1); second <- List(1,2,3)) yield (first,second) <console>:6: error: type mismatch; found : List[(Int, Int)] required: Option[?] for (first <- Some(1); second <- List(1,2,3)) yield (first,second) 一部をリストに切り替えると、正常にコンパイルされます。 for (first <- List(1,2,3); second <- Some(1)) yield (first,second) res41: List[(Int, Int)] = List((1,1), (2,1), (3,1)) これも正常に機能します。 for (first <- …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.