Scala类型别名包括伴侣对象[初学者]
我想编写一个类型别名来缩短,修改和封装的
Scala代码.
假设我有一些集合,它具有作为地图列表的属性,其值是元组. 我的类型会编写类似List [Map [Int,(String,String)]]的东西,或者我的应用程序允许的更通用的东西.我可以想象有一个超类型要求Seq [MapLike [Int,Any]]或任何漂浮我的船,具体的子类更具体. 然后我想为这个长类型写一个别名. class ConcreteClass { type DataType = List[Map[Int,String)]] ... } 然后我会愉快地使用ConcreteClass#DataType,我可以拿一个,然后使用它. 现在假设我添加了一个函数 def foo(a : DataType) { ... } 我想从外面用空列表调用它. 有什么办法我可以让Scala把我的类型理解为同样的东西,包括带有创建者方法的伴随对象,为了缩短代码和黑盒子呢? 解决方法
答案其实很简单:
class ConcreteClass { type DataType = List[String] } object ConcreteClass { val DataType = List } val d = ConcreteClass.DataType.empty 这使我的代码能够调用ConcreteClass.DataType来构建包含List中所有方法的列表并且付出很少的努力. 非常感谢Oleg的见解.如果你不想委托给任何对ConcreteClass.DataType的调用,他的答案也是最好的,但是准确控制你想让调用者做什么. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |