scala – 对Java枚举使用类型别名
我想实现类似于
scala如何将Map定义为预定义类型和对象的东西.在Predef中:
type Map[A,+B] = collection.immutable.Map[A,B] val Map = collection.immutable.Map //object Map 但是,我想使用Java枚举(来自共享库)来执行此操作.例如,我有一些全局别名: type Country = my.bespoke.enum.Country val Country = my.bespok.enum.Country //compile error: "object Country is not a value" 这样做的原因是我希望能够使用如下代码: if (city.getCountry == Country.UNITED_KINGDOM) //or... if (city.getCountry == UNITED_KINGDOM) 但是,在同时导入我的类型别名时这是不可能的.注意:如果我没有声明预定义类型并导入它,此代码将正常工作!我可以使用一些语法来实现这个目的吗? 解决方法
Scala 2.8引入了包对象的概念. 2.7中Predef中的很多东西都被移到了scala包的包对象中.
“如何创建全局别名”形式的问题通常有答案:使用包对象. (你不能自己创建一个真正的全局别名,为Scala开发人员保留权力,但是你可以在你的一个包及其子包中提供自己的名字或别名,这要归功于Scala中包的真正嵌套特性.) 遗憾的是,包对象上没有SID(Scala改进文档),但一些有用的链接包括: > http://www.scala-lang.org/node/1564 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |