我有DL <: HList
,我試圖用mkString
上detailsIn: DL
:如何在無形中實現ToTraversable?
val detail: String = detailsIn.mkString("", "; ", "")
mkString
被定義爲無形如下:
def mkString(start: String, sep: String, end: String)
(implicit toTraversable: ToTraversable.Aux[L, List, Any]): String = this.toList.mkString(start, sep, end)
我已經看到了很多的例子定義,需要一個功能一個ToTraversable的含義,但還沒有看到任何人真正創造了它的價值(我懷疑我在Shapeless中不夠精通,無法像我應該那樣容易地找到這些東西)。
我有我需要有???
填寫,如果這是正確的,我覺得一個例子是極大的幫助下面的代碼片段:
implicit val dlToList: ToList[DL, Any] = new ToTraversable[DL, List] {???}
不過,我懷疑有可能是工廠方法已經這樣做了,但如果是的話,我還沒有找到它。
如果myMethod可以找到隱式,爲什麼mkString找不到它呢? – bbarker
我希望有一個原因是它不在範圍內,但爲什麼?是否允許在選擇隱含方面有更多靈活性的設計決策? – bbarker
我試着編譯你的例子,但它在這個項目中仍然失敗了MWE:https://github.com/bbarker/ProjectGists/tree/master/Scala/ShapelessToTraversable;也許我錯過了一個適當的包括。 IntelliJ沒有解決這個問題,但我想這並不奇怪。 – bbarker