混淆scala私有字段变量
发布时间:2020-12-16 18:22:55 所属栏目:安全 来源:网络整理
导读:我是斯卡拉研究的第三天.使用书“开始 scala”. 作者使用一个例子来显示变量define与val var之间的差异而没有var val: class Book(private val title: String) { def printTitle(b: Book) { println(b.title) }} 在控制台中: scala val book = new Book("B
我是斯卡拉研究的第三天.使用书“开始
scala”.
作者使用一个例子来显示变量define与val var之间的差异而没有var val: class Book(private val title: String) { def printTitle(b: Book) { println(b.title) } } 在控制台中: scala> val book = new Book("Beginning Scala") book: Book = Book@ea05be scala> book.printTitle(new Book("Beginning Erlang")) Beginning Erlang 这里让我感到困惑的是没有/没有val var,而是私有修饰符: 我不确定我是否理解私权,但如果scala希望将标题作为私有字段,那么为什么它允许其他人从外部访问它,我认为prinTitle应该无法访问新书(“Beginning Erlang”)的标题字段 解决方法
值标题是类的私有,而不是实例.由于方法printTitle是类的成员,因此它可以访问其他实例的私有值.
如果您希望标题对实例是私有的,则可以使用private [this]修饰符. 此外,private [package]修饰符,其中package是定义所在的包的名称,可以与包共享私有成员.例如 package com.sample.foo class Book(private[foo] title: String) com.sample.foo包中的所有代码都可以访问 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |