scala
康康的博客
摸鱼小能手
展开
-
scala初学1之基础篇
1. object作为scala中的一个关键字,相当于java中的public static class这样一个修饰符,意思是object中成员是静态的所以例子中的main方法是静态的,不需要实例就可以直接被虚拟机调用,也是JVM平台的程序入口必备条件注意:object是scala中的静态类,不是对象2.“scala”和“java”都会编译为class字节码文件因此可以互相调用转载 2017-06-20 19:45:49 · 288 阅读 · 0 评论 -
scala中的map和tuple
1.默认情况下Map构造的是不可修改的集合(immutable),可变集合使用scala.collection.mutable.Map2.getOrElse方法:如果key不存在,则输出默认值3.SortedMap返回排序的Map集合4.LinkedHashMap可以记住插入数据的顺序5.tuple中可以有很多类型的数据,在大数据中一定使用tuple表达数据结构6.tuple另原创 2017-08-11 10:11:47 · 381 阅读 · 0 评论 -
scala中的implicit关键字
掌握implicit的用法是阅读Spark源码的基础,也是学习scala其它的开源框架的关键,implicit 可分为:1.隐式参数2.隐式转换类型3.隐式调用函数package kang/* * 1.使用伴生对象,在object中定义implicit * 2.导入内容 import kang.implicits._ * * */class转载 2017-08-11 10:11:41 · 328 阅读 · 0 评论 -
scala中的object和class
1.在object中定义关键字使用class2.使用new className的方式创建对象3.如果名称相同,则object中的内容都是class中的静态内容,就是说class可以在不创建对象的条件下调用object内容,4.object中特定的apply方法创建实例,apply是对象生成的工厂方法,用于控制对象的生成5.很多框架一般都是直接调用抽象类object的apply方法来转载 2017-08-11 10:11:22 · 1026 阅读 · 0 评论 -
scala中的偏函数
case语句(组合)除了可以被编译为匿名函数(类型是FunctionX,在Scala里,所有的函数字面量都是一个对象,这个对象的类型是FunctionX),还可以非常方便的编译为一个偏函数PartialFunction!(注意:PartialFunction同时是Function1的子类)编译器会根据调用处的函数类型声明自动帮我们判定如何编译这个case语句(组合)。case所对应的是不全转载 2017-08-11 10:11:07 · 523 阅读 · 0 评论 -
scala初学main方法参数解析
package kang/* 1. object作为scala中的一个关键字,相当于java中的public static class这样一个修饰符,意思是object中成员是静态的 * 所以例子中的main方法是静态的,不需要实例就可以直接被虚拟机调用,也是JVM平台的程序入口必备条件 * 注意:object是scala中的静态类,不是对象 * 2.“scala”和“java”原创 2017-08-11 10:10:58 · 3435 阅读 · 0 评论 -
scala中的正则匹配和模式匹配
模式匹配:match case使用,这里其实使用了提取器package kang class Applecase class RedApple(name:String, size:Int) extends Applecase class GreenApple(name:String, size:Int) extends Appleobject Scala_Patte原创 2017-08-11 10:10:32 · 408 阅读 · 0 评论 -
scala继承补充
当继承第二个时,使用with关键字package kangtrait logger{ def information:String def log(mesg:String){ println(mesg+" logger") }}trait Other_logger extends logger{//第三方的继承 override def log(mesg:S原创 2017-08-11 10:10:04 · 208 阅读 · 0 评论 -
scala中的泛型
对于一个带类型参数的类型,比如 List[T],如果对A及其子类型B,满足 List[B]也符合 List[A]的子类型,那么就称为covariance(协变),如果 List[A]是 List[B]的子类型,即与原来的父子关系正相反,则称为contravariance(逆变)package kang/* * 1.scala中类,函数,方法都可以是泛型, * 2.关于转载 2017-08-10 11:15:13 · 299 阅读 · 0 评论 -
scala中的继承
package kangclass Animal2{ val num=3 val array=new Array[String](num)} /*class Person extends Animal2{//这种方式子类不能覆盖父类的成员 val num=5}*/class Person extends {//这是提前定义,子类能覆盖父类的成员 override原创 2017-08-10 11:07:43 · 193 阅读 · 0 评论 -
scala中的函数和方法
Currying 复杂的函数式编程,可以维护变量在内存中的状态,且实现返回函数的链式功能,实现非常复杂的算法逻辑1.函数和变量是scala中的一等公民,函数可以赋值给变量 2.函数更常用的是匿名函数,如果需要使用,则赋值给变量(其实是val常量) 3.函数作为函数的参数传递 4.函数作为函数的返回值,这是实现了闭包:实质是scala函数背后是类和对象,scala参数作为对象原创 2017-08-10 10:52:42 · 465 阅读 · 0 评论 -
scala函数
关于函数的几个关键点1.函数是用def定义的2.函数会自动进行类型的推断来确定返回值,但是如果没有等于号,则推断失效3.函数的参数可以是函数,因为在scala中函数是对象4.如果在函数中无法推导出返回值类型,则需声明具体类型5.函数参数的顺序可以改变,只需要使用参数名object scala_function { def main(args: Array[St转载 2017-06-21 13:07:03 · 192 阅读 · 0 评论 -
scala控制结构
1.if是有返回值的,根据括号中的条件决定返回值 2.if条件表达式中可进行类型的推导,在复杂算法中时可省略变量类型的书写,为复杂算法提供便利 3.如果else后面没有内容,则默认if()..else (),()是为空的意思 4.if表达式中有多条语句需用{}封装,而且最后一条才是返回的结果 5.补充说明:{..}语句块是有值的,而且值是最后一条语句,值类型也是最后一条语句值的类型转载 2017-06-21 10:37:28 · 193 阅读 · 0 评论 -
linux上scala安装
1.下载安装scala包http://www.scala-lang.org/download/2.解压 tar -zxvf scala-2.12.4.tgz3.重命名 mv scala-2.12.4 scala rm -rf scala-2.12.4.tgz(删除包)4.配置环境 vi /etc/profile 最后面加上这两行 export SCALA_HOME=/usr/local/scal...原创 2018-03-10 22:48:11 · 481 阅读 · 0 评论