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
提交
取消