私は以前この質問をした:Combine a PartialFunction with a regular function匿名部分写像構文
、その後実現し、私は実際にそれを右に尋ねていないこと。 別の試みがここにあります。私はこれを行う場合は
:
val foo = PartialFunction[Int, String] { case 1 => "foo" }
val bar = foo orElse { case x => x.toString }
をそれがコンパイルされません:error: missing parameter type for expanded function The argument types of an anonymous function must be fully known. (SLS 8.5) Expected type was: PartialFunction[?,?]
しかし、これは正常に動作します:
val x: Seq[String] = List(1,2,3).collect { case x => x.toString }
質問は差がある何ですか?引き数のタイプは、両方のケースで同じです:PartialFunction[Int, String]
。渡された値は文字通り同一です。なぜ1つのケースが動作するのですが、もう1つは動作しませんか?
'orElse'は' [A1 <: A, B1 >:B]期待しながらcollect'が ''部分写像[A、B]期待コンパイラは最初に推測することができつつ、部分写像[A1、B1]を 'あなたは、何とか2番目の助けを必要とします。 –
ありがとう、@PeterNeyens、それは私のために説明します。あなたが約25ポイントの担当者を気にしていると答えて投稿してください。 bump :) – Dima