微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

scala案例类怎么定义

这篇文章主要讲解了“scala案例类怎么定义”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“scala案例类怎么定义”吧!

定义一个案例类

一个最简单的案例类定义由关键字case class,类名,参数列表(可为空)组成:

case class Book(isbn: String)
val frankenstein = Book("978-0486282114")

注意在实例化案例类Book时,并没有使用关键字new,这是因为案例类有一个认的apply方法来负责对象的创建。

当你创建包含参数的案例类时,这些参数是公开(public)的val

case class Message(sender: String, recipient: String, body: String)val message1 = Message("[email protected]", "[email protected]", "Ça va ?")
println(message1.sender)  message1.sender = "travi[email protected]"

你不能给message1.sender重新赋值,因为它是一个val(不可变)。在案例类中使用var也是可以的,但并不推荐这样。

比较

案例类在比较的时候是按值比较而非按引用比较:

case class Message(sender: String, recipient: String, body: String)
val message2 = Message("[email protected]", "[email protected]", "Com va?")val message3 = Message("[email protected]", "[email protected]", "Com va?")val messagesAreTheSame = message2 == message3

尽管message2message3引用不同的对象,但是他们的值是相等的,所以message2 == message3true

拷贝

你可以通过copy方法创建一个案例类实例的浅拷贝,同时可以指定构造参数来做一些改变。

case class Message(sender: String, recipient: String, body: String)val message4 = Message("[email protected]", "travi[email protected]", "Me zo o komz gant ma amezeg")val message5 = message4.copy(sender = message4.recipient, recipient = "[email protected]")message5.sender  message5.recipient message5.body

上述代码指定message4recipient作为message5sender,指定message5recipient为”[email protected]”,而message4body则是直接拷贝作为message5body了。

感谢各位的阅读,以上就是“scala案例类怎么定义”的内容了,经过本文的学习后,相信大家对scala案例类怎么定义这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程之家,小编将为大家推送更多相关知识点的文章,欢迎关注!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐