如何在Scala中编写数据类型的速记
如何为数据类型编写速记? 例如 比方说,我宁愿键入如何在Scala中编写数据类型的速记,scala,Scala,如何为数据类型编写速记? 例如 比方说,我宁愿键入整数,而不是列出[Integer] 而不是这个 def processNumbers(input:List[Integer]):List[Integer] = ... 到 这可能吗 谢谢是的,你可以用电脑来完成 尽管如此,这对他们来说并不是一个很好的用途列表[Int]对于其他scala开发人员来说是非常清楚的,您的类型Integers不提供额外的信息,因此会随着时间的推移降低代码的可读性 使用类型别名可以提高代码的可读性 type UserId
整数,而不是列出[Integer]
而不是这个
def processNumbers(input:List[Integer]):List[Integer] = ...
到
这可能吗
谢谢是的,你可以用电脑来完成
尽管如此,这对他们来说并不是一个很好的用途<代码>列表[Int]
对于其他scala开发人员来说是非常清楚的,您的类型Integers
不提供额外的信息,因此会随着时间的推移降低代码的可读性
使用类型别名可以提高代码的可读性
type UserId = Int
def processUsers(ids: List[UserId]): Foo
val ids: List[Int] = getBlogPostIds()
val foo = processUsers(ids) // Oops, those Ints are for blog posts, not users
在这种情况下,它向读者提供了额外的信息
def processUsers(ids: List[Int]): Foo
通过将定义从类型别名更改为类型别名,使用这种类型别名还可以使代码随着时间的推移逐渐变得更加类型安全
您不需要更改任何已经具有“UserId
”的方法签名,但这将让编译器帮助您确保不执行类似的操作
type UserId = Int
def processUsers(ids: List[UserId]): Foo
val ids: List[Int] = getBlogPostIds()
val foo = processUsers(ids) // Oops, those Ints are for blog posts, not users
使用值类方法,这样的错误会变成编译器错误。它的广泛使用为编写正确的代码增加了很多指导
val ids: List[BlogPostId] = getBlogPostIds
val foo = processUsers(ids) // Compile error; BlogPostId != UserId
val ids: List[BlogPostId] = getBlogPostIds
val foo = processUsers(ids) // Compile error; BlogPostId != UserId