![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Scala
文章平均质量分 64
霄嵩
这个作者很懒,什么都没留下…
展开
-
在IDE下开发第一个Scala程序
package com.dtspark.scala.basics/** * object作为Scala中的一个关键字,相当于Java中的public static class这样的一个修饰符,也就说object中的成员都是静态的! * 所以我们在这个例子中的main方法是静态的,不需要类的实例就可以直接被虚拟机调用,而这正是作为JVM平台上程序入口的必备 * 条件; * 疑问:原创 2016-08-29 18:09:58 · 1823 阅读 · 1 评论 -
Scala类型参数——泛型之协变
/** * 协变,是Scala中比较有特色的功能,它完美的解决了Java中泛型的一些缺陷。 * 比如 Professor是Master的子类,那么Card[Professor]是不是Card[Master]的子类呢? * 在Java中,很遗憾,不是!这给我们编码带来很多局限性。Scala的协变完美的解决了这一问题。 * 其实这个协变就是泛型的上边界的一种加强版。 *///大师原创 2017-10-29 14:39:33 · 487 阅读 · 0 评论 -
Scala隐式转换之隐式转换函数
/** * 隐式转换是Scala中一种特殊的功能,它能将一种数据类型转换成另外一种数据类型, * 然后这种数据类型将拥有另外一种数据类型的所有方法,可以看成是对类的一种增强。 * 隐式转换分为两种: * 1.隐式转换函数 * 2.隐式转换值 * * 定义隐式转换的关键字是implicit * 隐式转换的命名方式是one2one的形式 */class Speci原创 2017-10-29 15:54:53 · 794 阅读 · 0 评论 -
Scala隐式转换之隐式参数
/** * 隐式转换函数——隐式参数 */class SingPen { def write(content: String): Unit = { println(content) }}object ImplicitDemo3 { // def exam(name: String, pen: SingPen): Unit = { //被implicit修饰原创 2017-10-29 16:48:38 · 294 阅读 · 0 评论 -
Scala模式匹配
object MatchDemo { /** * 定义偏函数用PartialFunction来表示 * PartialFunction[T1,T2],T1表示传入参数的数据类型,T2表示返回值的数据类型 * 偏函数体中的case只会执行一个,如果匹配到了就不会继续往下匹配 */ val func: PartialFunction[String, Int] =原创 2017-10-22 23:05:01 · 202 阅读 · 0 评论 -
Scala隐式转换——视图界定
/** * 视图界定: T <% Person * T只能是Person的子类,或者T能隐式的转换成Person */class Person01(var name: String) { def sayHello(): Unit = { println(s"Hello,My name is $name") } def makeFriend(p: Person01原创 2017-11-04 16:44:56 · 358 阅读 · 0 评论 -
Scala高阶函数
object TopLevelFunction { def main(args: Array[String]): Unit = { //map函数,所有集合类型都存在map函数 //Array类型 Array("spark", "scala", "hadoop", "flink").map(_ * 2).foreach(println(_)) //List类型原创 2017-11-18 23:24:23 · 304 阅读 · 0 评论 -
Scala中的breakable
import scala.util.control.Breaks._object BreakAndContinueDemo { def main(args: Array[String]): Unit = { println("="*20+"Break Example"+"="*20) val array=Array(1,4,2,7,9,10) /** *原创 2017-11-18 23:26:20 · 7560 阅读 · 0 评论 -
Scala中的模式匹配——Option类型中的模式匹配
/** * Option类型中的模式匹配 * Option类型有两个子类,分别是Some和None(单例对象) * None是一个case object,它同Some一样都extends Option类,只不过Some是case class, * 对于case class我们已经很熟悉了,那case object又是怎么样的呢? * 对比反编译之后的代码可以看出,case ob原创 2017-11-19 18:43:31 · 681 阅读 · 0 评论 -
Scala中的样例类
/** * 样例类Case Class * Case Class一般被翻译成样例类,它是一种特殊的类,能够被优化以用于模式匹配。 * 当一个类被声名为case class的时候,scala会帮助我们做下面几件事情: * 1、构造器中的参数如果不被声明为var的话,它默认的是val类型的,但一般不推荐将构造器中的参数声明为var。 * 2、自动创建伴生对象,同时在里面给我们实现子原创 2017-11-19 18:03:19 · 9391 阅读 · 0 评论 -
Scala中的注解
package Testimport java.io._/** * 注解 * Annotation是一种对程序代码进行描述的结构化信息。 * Annotation可以分布在程序的任何地方,能够注解变量、类、方法、参数等多种元素, * 它的主要功能有以下几种: * 1、自动生成scala文档 * 2、检查程序中可能出现的语法问题 * 3、规定程序行为,例如以下代码原创 2017-11-19 20:59:18 · 3239 阅读 · 0 评论 -
Scala——基于Akka的并发编程和分布式应用程序开发
基于Akka分布式技术开发分布式应用程序,分为两个角色:1、master作用:接收worker的注册,并将worker的注册信息保存下来;感知worker的上下线;接收worker的汇报心跳,更新worker的相关信息;定时检测超时的worker,并将超时的worker从集群中移除掉。2、worker作用:向master进行注册,加入到集群中去;定时向master汇报心跳。原创 2017-11-06 00:15:02 · 2764 阅读 · 1 评论 -
Scala Trait(四)
/** * Trait的构造机制 *///trait也有主构造代码块,不包含在任何方法中的代码就是trait的主构造器的代码trait TraitDemo04 { println("这是TraitDemo04的主构造代码块!")}trait TraitDemo04_01 extends TraitDemo04 { println("这是TraitDemo04_01的主构造原创 2017-10-28 23:37:50 · 150 阅读 · 0 评论 -
Scala Trait(三)
/** * 为实例对象混入trait */trait TraitDemo03 { def say: Unit = { println("hello world!") }}//一个在继承了一个父类或trait,那么这个类就拥有该类或trait的所有非私有的方法class Baby(var name: String, var age: Int)object Bab原创 2017-10-28 23:36:50 · 150 阅读 · 0 评论 -
Scala implicits编程彻底实战及Spark源码鉴赏
本課課程:Spark源码中的Scala的 implicit 的使用Scala的 implicit 编程操作实战Scala的 implicit 企业级最佳实践Spark源码中的Scala的 implicit 的使用這個東西意義非常重大,RDD 本身沒有所謂的 Key, Value,只不過是自己本身解讀的時候把它變成 Key Value 的方法去解讀,RDD 本身就是一個 Reco转载 2016-08-06 21:43:05 · 2253 阅读 · 0 评论 -
Scala中的函数
package Basic/** * 函数可以被简单的认为是:包括了一条或者几条语句的代码体,该代码体接收若干参数, * 经过代码体处理后返回结果,例如f(x)=x+1 * 在Scala中函数是一等公民,可以向变量一样被传递、被赋值,同时函数可以赋值给变量,变量也可以赋值给函数,之所以可以是这样,原 * 因在于函数背后是类和对象,也就是说在运行的时候函数其实是一个变量!!!原创 2016-09-27 22:37:41 · 831 阅读 · 0 评论 -
Scala类型参数
package com.dtspark.scala.basics/** * Scala类型系统编程实战: * 1,Scala的类和方法、函数都可以是泛型,在Spark源码中可以到处看到类和方法的泛型,在实际实例化的时候指定具体 * 的类型,例如Spark最核心、最基础、最重要的抽象数据结构RDD里面关于RDD的类的定义是泛型的,RDD的几乎所有方法 * 的定义也都是泛型的,之所原创 2016-10-12 23:47:39 · 327 阅读 · 0 评论 -
Scala中的基本控制结构
package Basicimport com.sun.beans.decoder.TrueElementHandlerimport com.sun.xml.internal.ws.wsdl.writer.document.Import/** * Scala中的基本控制结构有顺序、条件和循环三种方式,这和其它的JVM语言是一致的,但是Scala也有一些高级 * 的流程控原创 2016-09-27 22:39:23 · 386 阅读 · 0 评论 -
Scala集合操作
package Basicimport scala.collection.mutable.ArrayBufferimport com.sun.xml.internal.ws.org.objectweb.asm.Item/** * 大数据是数据的集合以及对数据集合的操作技术的统称,具体来说: * 1、数据集合,会涉及数据的搜集、存储等,搜集会有很多技术,存储现在比较经典的原创 2016-09-28 14:17:27 · 382 阅读 · 0 评论 -
Scala面向对象
package Basic/** * 面向对象的三大精髓: * 1、对象不用关心消息从哪里来,到哪里去,只需要关心消息(或数据)的处理本身。 对象是弱耦合的,它是消息驱动的,或者说是数据驱动的。 2、一个对象的行为不影响另一个对象的行为。比如,一个对象挂掉了,另一个对象不可能也随之挂掉。 3、面向接口编程,为了封装具体实现的不同和业务的变化。原创 2016-09-28 21:09:24 · 305 阅读 · 0 评论 -
Scala函数定义
/** * Created by TG on 2017/10/19. * 定义函数的关键字是:val * 定义函数的通用格式是:val 函数名=(参数列表)=>{函数体} * 在函数式编程中,函数是头等公民。 * 函数可以像其他任意数据类型一样被传递和操作 */object FunctionDemo { //通用的定义格式 //val 函数名=(参数列表)=>{函原创 2017-10-19 15:22:57 · 613 阅读 · 0 评论 -
Scala方法定义
/** * Created by TG on 2017/10/17. * 在Scala中,定义方法的关键字是def * 定义方法的通用格式:关键字 方法名(参数列表):方法的返回值类型={方法体} */object MethodDemo { //方法的返回值不需要使用return关键字,同时方法的最后一条语句的返回值作为整个方法的返回值 def m1(x: Int, y:原创 2017-10-19 09:37:19 · 550 阅读 · 0 评论 -
Scala继承的特点
nabstract class ClassDemo { //定义抽象字段 val name: String //定义具体字段 //val age:Int=20 var age: Int = 10 //抽象字段不能使用private修饰,因为抽象字段本身就是需要子类去实现。 //如果添加private关键字修饰后,意味着子类不能访问,也就意味着不能实现该字段,那么会报错原创 2017-10-27 10:34:28 · 229 阅读 · 0 评论 -
Scala Trait(一)
/** * 在Scala中trait是一种特殊的概念。trait的用途很多,可以作为类似于Java的interface接口使用。 * 类可以支持对trait的多重继承,继承的时候统一使用extends关键字,没有implement关键字。 * scala的类对类只能单继承,但是对trait可以多继承。 */trait TraitDemo01 { //抽象方法 def sa原创 2017-10-28 22:24:29 · 242 阅读 · 0 评论 -
Scala Trait(二)
/** * trait中定义具体方法和具体的字段 */trait TraitDemo02 { //具体字段(非抽象字段) //使用var修饰的非抽象字段,不能被重写 var name: String = "李四" //使用val修饰的非抽象字段,可以被重写 val age = 20 //抽象字段,不管是使用var或val修饰的抽象字段,都可以被重写 val原创 2017-10-28 22:25:26 · 187 阅读 · 0 评论 -
Scala类型参数——泛型之逆变
/** * 逆变,也是Scala中一种比较特殊的功能,它也完美的解决了在Java中泛型的一大缺憾。 * 比如,Professor02是Master02的子类,那么Card[Professor02]是不是Card[Master02]的子类? * 这个在Java中是 不是的,但是在Scala中因为逆变、协变这个特色功能的存在,它就是其子类。 * 逆变其实就是泛型类下边界的加强版。原创 2017-10-29 15:03:33 · 357 阅读 · 0 评论