大数据/Scala 基础
莫言静好、
这个作者很懒,什么都没留下…
展开
-
Scala 语法基础
一 Scala 命令行或者解释器的使用REPL:Read(取值)--> Evaluation(求值)-->Print(打印)-->Loop(循环)Scala解释器也被称为REPL,会快速编译成字节码,然后交给JVM来执行 计算表达式:解释器中,解释器返回的值,如果没有指定变量来存储,那么值默认名称为res,而且会显示结果数据类型,比如Int,Double等等比如输入:1原创 2016-12-21 15:19:46 · 747 阅读 · 0 评论 -
Scala基础之变量和数据类型
一 变量1.1 变量类型Scala中有两种变量,val和var, val类似于java的final变量,一旦赋值,后续不能对其进行再次赋值。相反,var变量就是类似java非final变量,在生命周期内可以多次赋值traitVariableClient { def main(args:Array[String]) { var num = 10;原创 2017-06-12 17:12:40 · 931 阅读 · 0 评论 -
scala基础之隐式转换
一 隐式转换隐式转换函数,也被称作隐式视图,它是可以把一种类型转换成另外一种类型,进而可以使用另外一种类型的属性和方法,从而满足表达式的要求语法格式:implicit def 函数名(参数名:参数类型):返回类型 = {}作用:如果隐式作用域里存在这个定义,它会隐式地把原始类型的值转化为增强的类型的值(在需要的时候)比如现在有两个没有关系的类Person 和 Animalcla原创 2017-06-02 17:00:16 · 525 阅读 · 0 评论 -
scala基础之类和对象
一 创建一个简单的类class Simple{ private var name = "nicky" def sayHello(): Unit = { println("Hello,"+this.name) } def sayHi = sayHello()}object Simple{ def ma原创 2017-06-02 16:58:31 · 588 阅读 · 0 评论 -
scala基础之特质trait
Scala中,trait相当于Java中的接口,遇到需要使用Java接口的场景时,你就在Scala中可以使用trait了。 我们知道Java中你可以实现多个接口,那么Scala中,你也可以继承多个trait Java中接口不能有自己的实现方法,但是Scala中trait可以包含自己的实现方法 一 特质用作接口接口的作用:对行为进行规范,具有解耦的作用,满足业务系统依赖倒原创 2017-06-02 16:57:19 · 1136 阅读 · 0 评论 -
scala基础之对象
对象一词在Java中代表着类的实例,在scala中有着双重含义,即表示类的实例又是一个关键词object一 将对象视为类的实例1.1对象的强制转换可以使用asInstanceOf,这种情况一般适用于动态类型的强制转换# 检测某个变量是否属于某一类型变量.isInstanceOf[类型]# 类型转换:变量.asInstanceOf[类型]# 检测某一个变量的class是否原创 2017-06-02 16:51:19 · 589 阅读 · 0 评论 -
scala基础之泛型详解
在Scala中你可以使用类型参数来实现类和函数,这样的类和函数可以用于多种类型。比如Array[T] 你可以存放任意指定类型T的数据.类、特质、函数都可以有类型参数;将类型参数放在名字后面用方括号括起来 一 泛型类1.1Java 实现public classAnimalsA,B> { private A name; private B age;原创 2017-06-02 16:54:52 · 9900 阅读 · 2 评论 -
scala基础之提取器extractor
一 apply & unapply方法apply方法我们已经非常熟悉了,它帮助我们无需new操作就可以创建对象,而unapply方法则用于析构出对象,在模式匹配中特别提到,如果一个类要能够应用于模式匹配当中,必须将类声明为case class,因为一旦被定义为case class,scala会自动帮我们生成相应的方法,这些方法中就包括apply方法及unapply方法。本节将从提取器(也称析构原创 2017-06-02 16:53:50 · 460 阅读 · 0 评论 -
scala基础之控制结构
在scala中IF表达式和while & do while循环和c,java是一样的,并没有什么不同。主要不同在于for循环和try catch语句块等一for循环1.1 使用关键字to/** * to 会遍历到该值,而不是该值-1,这样的话下标从0开始,就会下标越界 * @param seq */def forTo(seq:List[String]): Unit ={原创 2017-06-02 16:52:31 · 340 阅读 · 0 评论 -
scala基础之函数和闭包
一 函数的类型1.1 不带返回值的类型defsayHello() { println("hello")}# Unit 和 java的返回值类型void是一样的def sayHi():Unit = { println("hi")}1.2 带有返回值的函数def sum(a:Int, b:Int):Int = { a + b}1.3原创 2017-06-02 16:49:16 · 902 阅读 · 0 评论 -
Scala 补充
一 跳出循环语句的三种方式1.1boolean 变量控制var flag = truevar res = 0var n = 0 while (flag) { res += n n += 1 if (n == 5){ flag = false }}原创 2016-12-21 15:26:47 · 1033 阅读 · 0 评论 -
Scala 面向对象编程
一 定义一个简单的类1.1定义类,包含field以及方法classHelloWorld { private var name = "leo" def sayHello() { print("Hello, " +name) } def getName = name} 1.2创建类的对象,并调用其方法原创 2016-12-21 15:25:10 · 1051 阅读 · 0 评论 -
Scala 函数式编程
一 函数式编程1.1将函数值赋给变量>>Scala中函数可以独立存在,不必像Java一样,还需要依附于类。而且我们可以直接将函数作为值赋给变量>>Scala语法规定,将函数赋值给变量时,相当于变量就是函数。必须在函数后面加上空格和下划线scala>def sayHello(name:String) {println("welcome you," + name)}sayHello原创 2016-12-21 15:23:27 · 1050 阅读 · 0 评论 -
Scala 函数
Scala函数可以面向对象,也可以面向过程,和java不一样,只能面向对象。一 函数定义定义Scala函数时,需要定义函数的函数名,参数和函数体。必须给出所有参数类型,但是不一定给出函数返回值类型只要右侧的函数体不包含递归的语句,Scala就可以自己根据右侧表达式推断返回类型 1.1不带返回类型必须函数名和函数体之间可以没有=scala>:paste//En原创 2016-12-21 15:22:02 · 638 阅读 · 0 评论 -
Scala 数组
一 Array 数组在Scala中,Array代表的含义和Java中类似,也是长度不可变的数组此外,由于Scala与Java都运行在JVM中,双方可以互相调用,因此Scala数组的底层实际上是Java数组。例如字符串数组在底层就是javaString[],整数数组在底层就是Int[] 数组初始化四种方式: >>val names = new Array[Strin原创 2016-12-21 15:20:55 · 5508 阅读 · 0 评论 -
scala 高级类型
一 单例类型 this.typeScala中,对于任何类型的引用v,都可以调用v.type,然后会返回v或者null,有时候这种是有用的,假设一下场景:比如某一个方法返回this,classPerson { private var name:String= null private var age:Int = 0 def setName(name:原创 2017-06-12 17:14:17 · 483 阅读 · 0 评论