當試圖從列表中刪除所有Unit -()
,席力圖召toMap
。不能證明單位<<(T,U)
scala> List((),()).filter(_ !=()).toMap
<console>:8: error: Cannot prove that Unit <:< (T, U).
List((),()).filter(_ !=()).toMap
^
這個錯誤是什麼意思?
對於List
,我想製作一張非單元元素的所有元組(String, String)
的,但是一些值可以爲空。
scala> val x = List((),(), (3,4)).filter(_ !=()).toMap
<console>:7: error: Cannot prove that Any <:< (T, U).
val x = List((),(), (3,4)).filter(_ !=()).toMap
^
scala> val x = List((),(), (3,4)).filter(_ !=())
x: List[Any] = List((3,4))
scala> x.toMap
<console>:9: error: Cannot prove that Any <:< (T, U).
x.toMap
^
感謝您指出我的設計缺陷。我使用'None''sb/c,當使用for表達式迭代List [JsObject]時,我需要返回一個字段(我相信)作爲for表達式的yield的一部分。 .')。我的代碼如下所示:'for {jsObj < - jsonObjs; val x = ...'返回類型是List [Option(String,JsValue)]'。是否可以「跳過」表達式中的值?對於我需要跳過的值,我將返回「無」。 –
@Kevin - 是的,你可以跳過數值。這就是我關於在理解中使用警衛的意見。閱讀我鏈接到的博客上的示例,並且應該清楚如何執行此操作。順便說一句,我第一次在Scala編寫理解時遇到了類似的問題。在我學會了如何利用警衛和'Nothing'類型之後,我能夠做很多工作來清理我的代碼! – DaoWen