scala答疑

scala疑问—解答

在这里插入图片描述
如下是对scala的问题解答,目前只收录了一些简单问题。另外,博友们,如果有什么关于scala的疑问,欢迎在评论区留言,我必定解答。

目录
1.为什么main方法必须写在object里?
2.不可变列表、集、数组...等。不是说不可变吗?为什么会有些操作?如拼接....
3.可变类型的引用
4.实例成员、静态成员
5.
1.为什么main方法必须写在object里?
	/*程序必须以一个函数main作为入口,但因为没有全局函数,所以就必须写在类里面,而且不是通过对象调用进入的,所以要是静态的,但scala没有static这个关键字和这种语义,所以又搞出了obejct伴生对象这种类似的东西。语义上就是这个伴生的单例对象的实例方法,给人感觉就更面向对象了,跟java/C#(都不是纯粹面向对象)那种就不一样了。C++多范式,可以定义全局函数,所以main直接全局函数就可以了,不必绕这种弯。


官方回答:
	scala和Java一样,如果要运行一个程序,必须有一个main方法。而在Java中main方法是静态的,而在scala中没有静态方法。在scala中,这个main方法必须放在一个单例对象中。(而scala中单列对象object 就类似java中object.)
2.不可变列表、集、数组…等。不是说不可变吗?为什么会有些操作?如拼接…
/*
	答案:是的。对不可变类型进行一些操作的时候,并不是在原变量上操作的,而是生成一个新的变量。 
*/


// List列表相加,生成一个新的List
scala> val b = List(1, 2, 3) ++ List(1, 2, 3)
b: List[Int] = List(1, 2, 3, 1, 2, 3)

scala> b
res8: List[Int] = List(1, 2, 3, 1, 2, 3)



//Set集合相加操作,生成一个新的集合
scala> Set(1,2,3,4,5,6) ++ Set(6,7,8)
res13: scala.collection.immutable.Set[Int] = Set(5, 1, 6, 2, 7, 3, 8, 4)



/*综上,可以看出,这种不可变类型 即使有操作,那也是生成一个新的变量,不会再原变量上修改其内容*/
3.可变类型的引用
//不可变类型都在immutable库中,默认已经被引用。如果想引用可变类型,就需要引用mutable库。
	import scala.collection.immutable.xxxxx
	import scala.collection.mutable.xxxx

//如下 例子展示 不可变集合 与 可变集合的操作。【注意留心如下】
	//1.默认引用的是不可变集合
	//2.可变集合不可变集的创建方式一致,只不过需要提前导入mutable.set可变集类
	//3.不可变类型在操作时候不可被修改,而可变类型可以。


scala> val a = Set(1,2,3,4)
a: scala.collection.immutable.Set[Int] = Set(1, 2, 3, 4)

scala> a += 1
<console>:13: error: value += is not a member of scala.collection.immutable.Set[Int]
       a += 1
         ^




scala> import scala.collection.mutable.Set
import scala.collection.mutable.Set

scala> val b = Set(1,2,3,4)
b: scala.collection.mutable.Set[Int] = Set(1, 2, 3, 4)

scala> b += 1
res21: b.type = Set(1, 2, 3, 4)





scala> import scala.collection.immutable.Set
import scala.collection.immutable.Set

scala> val c = Set(1,2,3,4)
<console>:13: error: reference to Set is ambiguous;
it is imported twice in the same scope by
import scala.collection.immutable.Set
and import scala.collection.mutable.Set
       val c = Set(1,2,3,4)
               ^

在这里插入图片描述

4.实例成员、静态成员
/*
回答1:
	静态成员归类所有,实例成员归对象所有!


回答2:
	JAVA的类中可以包括2种成员:实例成员和类成员(静态成员)
	实例成员时属于对象的,实例成员包括成员变量和实例成员方法。只有创建了对象之后,才能通过对象访问实例成员变量和调用实例成员方法。
	类成员时属于类的,类成员需要用关键字static标示,也称为静态成员,类成员包括类成员变量和类成员方法。通过类名可以直接访问类成员变量和调用类成员方法,即使没有创建对象,也能够引用类成员。类成员也可以通过对象引用。

*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值