scala

Scala系列14:scala继承,重写,super,类型推断等使用详解

前提是你 提交于 2020-09-29 07:30:51
0.Scala继承 scala语言是支持面向对象编程的,我们也可以使用scala来实现继承,通过继承来减少重复代码。 0.1定义语法 scala和Java一样,使用 extends 关键字来实现继承 可以在子类中定义父类中没有的字段和方法,或者重写父类的方法 类和单例对象都可以从某个父类继承 语法 class/object 子类 extends 父类 { .. } Copy 示例 0.2示例 | 类继承 定义一个Person类,再定义一个Student类,继承自Person类 创建一个Student类对象实例,并设置name为“张三” 打印姓名 参考代码 package com.robot.scalademo1 class Person3 class Student3 extends Person3 object _08ObjectDemo { class Person { var name = "super" def getName = this.name } class Student extends Person //注意如果类没有实体,可以省略{} def main(args: Array[String]): Unit = { val p1 = new Person() val p2 = new Student() val p3:Student = new Student(

Scala系列8:函数式编程之map,flatten,flatmap的使用详解

人盡茶涼 提交于 2020-09-28 23:23:54
0.Scala函数式编程 我们将来使用Spark/Flink的大量业务代码都会使用到函数式编程。下面这些事开发中常用的函数式编程。注意这些函数都是操作 Scala 集合的,一般会进行两类操作:转换操作(transformation )和行动操作(actions)(有些人喜欢叫他为聚合操作)。第一种操作类型将集合转换为另一个集合,第二种操作类型返回某些类型的值。 遍历( foreach ) 映射( map ) 映射扁平化( flatmap ) 过滤( filter ) 是否存在( exists ) 排序( sorted 、 sortBy 、 sortWith ) 分组( groupBy ) 聚合计算( reduce ) 折叠( fold ) 1.map的使用详解 集合的映射操作是将来在编写Spark/Flink用得最多的操作,是我们必须要掌握的掌握。 map方法接收一个函数,将这个函数应用到每一个元素,返回一个新的列表 【1.1语法结构】 def map[B](f: (A) ⇒ B): TraversableOnce[B] 【1.2语法解释】 尖叫提示: 1.同foreach一样,map传入的参数也是函数,匿名函数 2. map 函数的逻辑是遍历集合中的元素并对每个元素调用函数。你也可以不调用任何函数,保持返回元素本身,但这样 map无法发挥作用,因为你在映射过后得到的是同样的集合。

Scala系列13:scala单例对象,main方法,伴生对象,apply方法等使用详解

泪湿孤枕 提交于 2020-09-28 19:42:42
0.单例对象 scala中没有Java中的静态成员,我们想要定义类似于Java的static变量、static方法,就要使用到scala中的单例对象——object. 0.1定义单例对象 单例对象表示全局仅有一个对象(类似于Java static概念) 在scala中定义单例对象和定义类很像,就是把class换成object 在object中定义的成员变量类似于Java的静态变量 可以使用object对象.成员变量或者对象 成员变量等方式直接引用成员变量 0.1.1示例 示例说明 定义一个Dog单例对象,保存狗有几条腿 在main方法中打印狗腿的数量 object _08ObjectDemo { // 定义一个单例对象 object Dog { // 定义腿的数量 val LEG_NUM = 4 } def main(args: Array[String]): Unit = { println(Dog.LEG_NUM) println(Dog LEG_NUM) //两个结果一样都是4 } } 0.2 在单例对象中定义成员方法 在object中定义的成员方法类似于Java的静态方法 0.2.1示例 示例说明 设计一个单例对象,定义一个能够打印分割线(15个减号)的方法 在main方法调用该方法,打印分割线 object _09ObjectDemo { object PrintUtil