Scala 包和引入内容整理及习题

本文深入探讨Scala中的包管理,包括嵌套引包的作用域、包对象的使用及变量方法的调用原理,以及如何在任意位置引入并重命名包。通过具体示例,如随机数生成器的实现,展示包对象的灵活性。同时,对比Scala与Java在包引入上的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述
题目描述

本章自我总结

本章主要讲述的是引包的一些问题,相比于Java,Scala多出了一些引包方式。

1.嵌套引包,注意作用域,可以访问上层作用域中的名称
2.包对象的加入,可以在包中声明变量和方法,在同包中可以直接调用

原理在韩顺平大神的视频中有提到,是因为包对象在编译时会产生两个类(Scala语言万物皆是类),同包调用实际上调用静态产生静态对象的变量和方法。

3.任何地方都可以引入包,可以重命名包

课后习题解答

1.参见上第1条,可访问的上层作用域不同。
子包里的类可以使用父包里的类
2. 没看懂,什么叫让朋友们感到困惑额
3.

package object random{
 var seed:Int=_
 val a=BigDecimal(1664525)
 val b=BigDecimal(1013904223)
 val n:Int=32
 def nextInt():Int={
   val tp=(seed*a+b)%BigDecimal(2).pow(n)
   seed=tp.toInt
   seed
 }
 def nextDouble():Double={
   val tp=(seed*a+b)%BigDecimal(2).pow(n)
   seed=tp.toInt
   tp.toDouble
 }
 def setSeed(seed:Int)={
   this.seed=seed
 }
}
package random{
 object test{
   def main(args: Array[String]): Unit = {
     setSeed(4)
     for(i<- 1 to 10){
       println(nextDouble())
     }
   }
 }
}

java虚拟机的局限性,包中不能使用函数和变量
5.
该方法在com包中可见
6.

import java.util.{HashMap=>JavaHashMap}
import scala.collection.mutable.HashMap
val jmap=new JavaHashMap[Int,String]()
jmap.put(1,"a")
jmap.put(2,"b")
jmap.put(3,"c")
var smap=HashMap[Int,String]()
for(k<-jmap.keySet().toArray()){
 smap+=(k.## ->jmap.get(k))
}
for((k,v)<-smap) println(k+":"+v)

略,就是将上面的引包换个位置,换到需要的语句之上,因为相比于java,scala任何地方都可以引包
8.
作用是引入java和javax下所有的包,不是一个好主意,引入太多包会导致编写代码时重复命名现象严重

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值