我需要包裝一堆函數返回Either[String, X]
- 爲理解,還需要轉換一些調用的結果使用一些純函數和緩存那些結果在臨時變量中。斯卡拉::理解和任意與自由變量
以下(非常人工的)代碼不編譯
1: def someFunc(x: Int): Either[String, Int] = Right(x)
2:
3: def someMath(i: Int): Int = i
4:
5: val z = for {
6: x <- Right("aaaa").right
7: y <- Right((1, x)).right
8: tmp = someMath(y._1)
9: t <- Right(tmp).right
A: l <- someFunc(tmp).right
B: } yield l
C:
D: z
Error:(7, 6) value flatMap is not a member of Product with Serializable with scala.util.Either[Nothing,((Int, String), Int)] y <- Right((1, x)).right ^
如何定義的任意類型(也未)在for {...}
表達式中的變量?
我在'scala-2.11.8'下重現了這個錯誤。但在'scala-2.12.1'下,它工作正常。 –