文档章节

scala学习笔记

cjun1990
 cjun1990
发布于 2015/09/10 09:45
字数 529
阅读 114
收藏 0

1.lazy

惰性计算

     惰性 求值 特别用于 函数式编程语言 中。在使用延迟求值的时候,表达式不在它被绑定到变量之后就立即求值,而是在该值被取用的时候求值 。 除可以得到性能的提升外,惰性计算的最重要的好处是它可以构造一个无限的数据类型。

    Scala中通过lazy关键字来定义惰性变量,惰性变量只能是不可变变量。例如下面,只有在调用惰性变量b的toString方法的时候,才会去实例化b这个变量。可以看到“Test”是先打印出来的。

class Book(name:String){

    println("new book"+name)

    override def toString() = "《"+name+"》"

}

lazy val b = new Book("Java")

println("Test")

println(b.toString)

参考:Scala的函数式编程

2.“_”代表任意值。

3.tuple元组

在scala shell中,可以使用tab键进行提示。

创建元组的方式

var tuple1 = Tuple1("localhost", 8888);

var tuple1 = Tuple2("localhost", 8888);

.

var tuple1 = Tuple22("localhost", 8888);

var tuple1 = ("localhost", 8888);

var tuple1 = "localhost" -> 8888;

访问元组的方式

一个基于1的元素索引访问它,下标是从1开始的如下

tuple1_1:localhost

tuple1_2:8888

4. def max(x:Int, y:Int):Int = {……}

在scala中,scala编译器是无法推断函数的参数类型的,所以必须显示的注明函数的参数类型。

5.如果scala命令行无法回删,更改终端为Linux,在工具使用下面有博文http://my.oschina.net/cjun/blog/610402

6.scala命令行如果想换行,必须的是一个完整的语句再进行换行,否则会报错。

7.case object AAA {}相当于java的java bean,不用设置set和get方法,scala会自动帮我们加上set和get方法。

8.在命令行使用scala的时候:scala xxx.jar,后面加类路径(scala xxx.jar com.bigdata.xxx)是没用的,所以需要在插件maven-assembly-plugin里面指定mainClass属性,来设置主类,如果不设置,就会提示java.lang.NullPointerException

9.传入函数的参数都是不可变的,是val类型的。参考:Scala基本语法和概念

© 著作权归作者所有

共有 人打赏支持
cjun1990
粉丝 32
博文 370
码字总数 183608
作品 0
深圳
程序员
Scala 学习笔记 模式匹配

1. 模式匹配简介 模式匹配是 Scala 的重要特性之一,前面两篇笔记Scala学习笔记(六) Scala的偏函数和偏应用函数、Scala学习笔记(七) Sealed Class 和 Enumeration都是为了这一篇而铺垫准备的...

Tony沈哲
2017/05/16
0
0
Scala学习笔记 - 函数

Scala学习笔记 - 函数 OneCoder2016-09-2157 阅读 Scala Scala做为支持函数式编程的语言,函数自然是其核心的特性,因此笔者对函数部分的学习自然会更加认真细致一些。但也仅仅是基础部分。 ...

OneCoder
2016/09/21
0
0
Scala学习笔记-基础语法

Scala学习笔记-基础语法 OneCoder2016-09-2046 阅读 Scala 上手学习Scala语言。先熟悉一下语法。对于Scala笔者也是完全的新手,对scala的设计思想和实现原理没有太多了解。错误在所难免,还望...

OneCoder
2016/09/20
0
0
zeppelin入门介绍视频

Zeppelin 1. 缘起 各位朋友们,有一段时间没有更新内容。因为最近一直也比较忙,有些计划也就搁置了。 最近在非技术领域有一些感悟,也有一些收获,因此发起做些视频教程的心。 这是我录制的...

云戒
2017/08/30
0
0
Scala笔记整理(九):Actor和AKKA

[TOC] 概述 Scala的Actor有点类似于Java中的多线程编程。但是不同的是,Scala的Actor提供的模型与多线程有所不同。Scala的Actor尽可能地避免锁和共享状态,从而避免多线程并发时出现资源争用...

xpleaf
04/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

学习大数据为什么要先学Java?

计算机编程语言有很多,目前用的多一点的就是Java,C++,Python等等。目前大多数学习大数据的人都是选择学习Java,那Java到底好在哪呢?为什么学大数据之前要先学Java呢?我们今天就来分析一...

董黎明
11分钟前
0
0
php删除服务器所有session

php删除服务器所有session踢掉所有在线用户linux 注意:如果要删除服务器上所有session,重启php服务是解决不了问题的,php的session是持久化的。 有效解决办法: 删除 /tmp 下的所有文件(默...

妖尾巴
17分钟前
0
0
Ubuntu18.04 安装最新版WPS

1.手动卸载libreoffice:sudo apt-get remove --purge libreoffice* 2.官网下载WPS和字体: WPS:http://wps-community.org/download.html 字体:http://wps-community.org/download.html?vl......

AI_SKI
45分钟前
4
0
数据结构(算法)-图(深度优先搜索 DFS)

#include <iostream>using namespace std;#define MaxVex 30typedef char VertexType;typedef struct vexNode adjList[MaxVex];struct edgeNode{int adjvex;//邻接点......

ashuo
50分钟前
1
0
1024 搞事倒计时!距程序员节还有 2 天!

详情请关注微信公众号:七牛云

七牛云
51分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部