scala学习总结

1. 变量的声明

scala有两种变量:

val和var,val相当于Java中的final变量,一旦被赋值就不能修改。

var相当于java中的普通变量,其值可变

constant为定义常量的关键字

指定类型声明变量:

2. scala的常用类型和条件表达式

Scala的数值类型有7种:(无引用类型)Byte、Char、Short、Int、Long、Float和Double

1个Boolean类型

Java中的void类型对应scala中的Unit

条件表达式的使用参考:如何在Scala中使用条件表达式

3. for循环

scala之for循环参考:Scala之for循环

for推导式:

4. 方法和函数的声明以及方法转换为函数

参考: Scala方法定义,方法和函数的区别,将方法转换成函数

定义方法:

è¿éåå¾çæè¿°

定义函数:

è¿éåå¾çæè¿°

将方法转换成函数(神奇的下划线):

è¿éåå¾çæè¿°

5. 数组

参考:scala学习笔记-Array、ArrayBuffer以及遍历数组(7)

数组转换:

6. 映射

参考:scala-映射map

映射是键/值对偶的集合。对偶是元组(tuple)的最简单形态——元组是不同类型的值的聚集。

7. 元组

scala学习(数组,元组)

Scala中Tuple(元组)的使用

8. scala集合之seq、set、map

Scala 第十三章 集合

9.scala Lazy关键字

当val被声明为Lazy时,它的初始化将被推迟,直到我们首次对它取值

Scala中lazy关键字的使用和理解

10. scala函数式编程

深入理解Scala中的函数式编程

第3讲:Scala函数式编程彻底精通

scala学习笔记-函数式编程(14)

函数式编程之reduce

函数式编程之fold

函数式编程之aggregate

Scala学习笔记之Scala函数及函数式编程

Scala之集合上常见的函数式风格的操作汇总

scala实现wordCount

scala算子综合案例(一)----- wordcount的多种实现

11.面向对象和模式匹配

Scala学习之路----面向对象编程

scala学习笔记-面向对象编程之继承.(12)

apply方法:

12. scala柯里化

柯里化(Currying)指的是将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数为参数的函数。

深入理解scala的柯里化( currying or curry )以及其用处

13. 隐式转换和隐式函数

scala的隐式转换学习总结(详细)

原 Scala隐式转换几种使用场景

14.泛型

scala基础之泛型详解

15. scala中的Actor

Scala Actor 并发编程

Scala Actor并发编程 实战(一)

package ActorTest

import scala.actors.{Actor, Future}

/**
  * 用Actor实现同步和异步的消息发送和接收
  */
class ActorDemo3 extends Actor {
  override def act(): Unit = {
    while (true) {

      receive {
        case "start" => println("starting")
        case AsyncMsg(id, msg) => {
          println(s"id: $id, AsyncMsg: $msg")
          Thread.sleep(2000)
          //发送消息
          sender ! ReplyMsg(5, "success")
        }
        case SyncMsg(id, msg) => {
          println(s"id: $id, SyncMsg: $msg")
          Thread.sleep(2000)
          //发送消息
          sender ! ReplyMsg(5, "success")
        }
      }
    }
  }
}

object ActorDemo3{
  def main(args: Array[String]): Unit = {
    val actorDemo3 = new ActorDemo3
    actorDemo3.start()

    //异步发送消息,没有返回值
    actorDemo3 ! AsyncMsg(1, "Hi~ AsyncMsg no res");
    println("没有返回值地异步消息发送完成")

    //同步发送消息,线程等待有返回值
    val resContent = actorDemo3 !? SyncMsg(2, "Hi~SyncMsg")
    println("有返回值的同步消息发送完成")
    println("返回值 :" + resContent);

    //异步发送消息,有返回值,返回类型是Future[Any]
    val replyRes: Future[Any] = actorDemo3 !! AsyncMsg(3, "Hi~ AsyncMsg has res")
    //等待一会,获取返回值,否则获取到的是none
    Thread.sleep(5000);
    if (replyRes.isSet){
      println(replyRes.apply())
    }else{
      println("none")
    }
  }
}

case class AsyncMsg(id: Int, msg: String)

case class SyncMsg(id: Int, msg: String)

case class ReplyMsg(id: Int, msg: String)

Scala Actor,receive不断接收消息,react复用线程,结合case class的actor,Future使用,使用Actor进行wordCount

16.Akka

akka之RPC通信1

Scala使用Akka模拟RPC机制代码2

 

scala学习书籍推荐:《快学scala》

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值