Scala的隱藏功能每個Scala開發人員都應該注意Scala的隱藏功能是什么?請回答一個隱藏的功能。
3 回答

倚天杖
TA貢獻1828條經驗 獲得超3個贊
結構類型定義 - 即通過它支持的方法描述的類型。例如:
object Closer { def using(closeable: { def close(): Unit }, f: => Unit) { try { f } finally { closeable.close } }}
請注意,除了具有方法之外,未定義參數的類型closeable
close

小怪獸愛吃肉
TA貢獻1852條經驗 獲得超1個贊
Type-Constructor Polymorphism(又名更高級的類型)
例如,如果沒有此功能,您可以表達在列表上映射函數以返回另一個列表,或在樹上映射函數以返回另一個樹的想法。但你不能表達這種想法通常不高于種。
使用更高類型,您可以捕獲任何使用其他類型參數化的類型的想法。一個帶有一個參數的類型構造函數被認為是實物(*->*)
。例如,List
。返回另一個類型構造函數的類型構造函數被認為是實物(*->*->*)
。例如,Function1
。但是在Scala中,我們有更高的類型,因此我們可以使用其他類型構造函數進行參數化的類型構造函數。所以他們就像((*->*)->*)
。
例如:
trait Functor[F[_]] { def fmap[A, B](f: A => B, fa: F[A]): F[B]}
現在,如果你有Functor[List]
,你可以映射列表。如果你有Functor[Tree]
,你可以映射樹木。但更重要的是,如果你有Functor[A]
任何A類(*->*)
,你可以映射一個函數A
。
添加回答
舉報
0/150
提交
取消