scala同时声明两个变量_Scala之伴生类与伴生对象

一.Scala应用特点

在大数据开发中,scala编程语言应用广泛,Spark计算引擎底层就是使用scala语言编写的,因此使用scala编写Spark程序非常方便。Scala相比Java,其是完全面向对象的,支持函数式编程和链式编程,代码简洁度大大提高。Flink也支持Scala语言。下面是一个计算WordCount的例子:

val result = textRDD.map(row => row.replace(",", ""))//去除文字中的,防止出现歧义   .flatMap(row => row.split(" "))//把字符串转换为字符集合   .map(row => (row, 1))//把每个字符串转换为map,便于计数   .reduceByKey(_+_)//计数

在大数据分析中,类的继承,单例模式等Java常见的功能使用较少,一般都是做数据处理。

二.概念

类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。

三.代码实战

//定义私有的构造方法class Marker private(val color : String){   override def toString() : String = "marker color " + color } object Marker{   private val markers = Map(     "red" -> new Marker("red"),     "blue" -> new Marker("blue"),     "green" -> new Marker("green")   )   def apply(color : String) = if(markers.contains(color)) markers(color) else null } object Main{   def main (args: Array[String]) {     println(Marker("blue"))     println(Marker("green"))     println(Marker("red"))     println(Marker("white"))   }}

私有类不能使用new创建实例,否则会报错:

val marker = new Marker("haha")

Error:(33, 18) constructor Marker in class Marker cannot be accessed in object Main

Scala中的类不用显式声明为public,一个Scala源文件中可以有多个类。

以上实例的类定义了一个变量 color ,一个方法:toString,该方法返回值为一个字符串。

Scala 的类定义可以有参数,称为类参数,如上面的 color ,类参数在整个类中都可以访问。

伴生类和其伴生对象相互伴生,且名称必须相同。

四.执行结果

d1f8569d71fb095d2a2ac2f0141a9f42.png
f1d8fae77bc3bb9282aae2868d57c761.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值