Scala 学习笔记(2)
2019独角兽企业重金招聘Python工程师标准>>>
一、条件表达式,if else是可以返回值的,if (x > 0) 1 else -1,这个表达式的返回值是Int类型,-1或者1。所以可以这么写val i = if (x > 0) 1 else -1 ,其实我更喜欢这么写 if (x > 0) i=1 else i=-1,前者更加函数化,用val就行,后者更加指令化,必须用var。
二、Unit,if (x > 0) 1,x > 0的话,返回值是1,这个没有问题,可是x < 0怎么办呢?这个表达式没有返回值,没关系,Scala当中有一个Scala.Unit,写作(), 就相当于void 。
三、关于分号,scala当中可写可不写,但有一种情况必须写,一行写了多个语句,其实这个事不知道也行,干嘛非要一行写多个语句。
四、块表达式,java当中也有差不多的东西,不同的是,scala这东西也是有返回值的,返回值就是 x + y ,最后一句话是x + y,这在java当中是不可理解的东西,但是scala当中,这个就相当于是这个块表达式的返回值。
val res = { val x = 10; val y = 20; x + y }
五、While,scala和java没有明显区别,按照我的理解,while是比较指令化的东西,在scala当中尽量避免使用。
六、For, for(i <- 1 to 10) println(i),这是scala当中for的典型样子,跟java当中for (String str : String[])写法是类似的,这个东西在scala当中常用,下面有更详细的介绍。
七、高级for循环,1、多层循环不用写多个for;2、for的括号内,可以写很多语句;3、每个生成器后面可以带一个守卫
for (i <- 1 to 10 if i % 2 == 0; toValue = 5; j <- 1 to toValue if j % 2 == 0) println(i, j)
八、for推导式,for语句之所以在scala当中更加受宠,因为它也能有返回值。下面语句的返回值是Vector((2,2), (2,4), (4,2), (4,4), (6,2), (6,4), (8,2), (8,4), (10,2), (10,4))
for (i <- 1 to 10 if i % 2 == 0; toValue = 5; j <- 1 to toValue if j % 2 == 0) yield (i, j)
九、函数,不需要return,最后一个表达式的值就是返回值,也就是x或者-x
def abs(x : Int) = if (x > 0) x else -x
十、默认参数和带名参数,这里充分体现了scala的灵活性
def concat(value : String, left : String = "[", right : String = "]") = left + value + right
十一、变长参数,终于又减到一个跟java差不多的概念
def sum(args : Int*) = {累加操作}
十二、过程,这里其实也跟java差不多,void开头的方法在java当中可以称之为过程,而在scala当中,没有返回值的函数,也可以称之为过程,不过在scala当中,强调的是函数化的编程,所以,一个函数返回值以外的操作,被称之为副作用。过程有以下两种写法:
def printSelf(str: String) {print(str)}或 def printSelf(str: String) :Unit = {print(str)}
十三、lazy val变量的延迟加载,在第一次访问的时候,在实际加载值
十四、异常,无受检机制,也有返回值,Nothing
转载于:https://my.oschina.net/dongtianxi/blog/731277
Scala 学习笔记(2)相关推荐
- Scala 学习笔记
Scala 学习笔记 1 object func_exp { 2 println("Welcome to the Scala worksheet") //> Welcome ...
- Scala学习笔记04:内建控制结构
Scala学习笔记04:内建控制结构 scala提供的控制结构并不算多,因为在函数式编程中,可以自己开发出各种功能的控制结构,所以scala提供的原生控制结构仅仅够用为止. 1.if - 判断 if是 ...
- Scala学习笔记03:操作符
Scala学习笔记03:操作符 一.scala中操作符与方法的等价性 scala中操作符即方法.方法即操作符.scala中操作符其实是普通方法调用的另一种表现形式,运算符的使用其实就是隐含地调用对应的 ...
- Scala学习笔记02:数据类型、常量与变量
Scala学习笔记02:数据类型.常量与变量 一.数据类型 1.基本数据类型 Byte 字节型 Short 短整型 Int 整型 Long 长整型 Char 字符型 String 字符串 Float ...
- Scala学习笔记(三)
Scala学习笔记(三) 一.模式匹配 1. 简单模式匹配 2. 匹配类型 3. 守卫 4. 匹配样例类 5. 匹配数组 6. 匹配列表 7. 匹配元组 8. 变量声明中的模式匹配 8.1 获取数组中 ...
- Scala学习笔记(一)
Scala学习笔记(一) 一.Scala简介 二.Scala安装与配置 1. 安装JDK 2. 安装Scala SDK 3. 安装IDEA插件 三.Scala解释器 1. 启动Scala解释器 2. ...
- 机器学习(三)--- scala学习笔记
Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编程和函数式编程的各种特性. Spark是UC Berkeley AMP lab所开源的类Had ...
- Scala学习笔记-环境搭建以及简单语法
关于环境的搭建,去官网下载JDK8和Scala的IDE就可以了,Scala的IDE是基于Eclipse的. 下面直接上代码: 这是项目目录: A是scala写的: package first impo ...
- Scala学习笔记总结
Scala学习网站:https://www.runoob.com/scala/scala-intro.html scala总结: Scala编程语言学习总结_hjy1821的博客-CSDN博客_sca ...
- Scala学习笔记-方便查找使用 为Spark学习打基础
Scala学习 注意 伊始 为什么是Scala 网课 环境 电脑环境安装 关于版本的声明 我的环境和版本 IDEA插件安装 IDEA关联Scala源码 基础部分1 文档注释和生成 字符串的三种输出 变 ...
最新文章
- Docker Compose 配置文件详解
- matplotlib画图中文显示
- 图解SQL子查询实例
- 常用的JVM调优参数总结汇总【随时查阅学习】
- CentOS 7 Flannel的安装与配置
- 如何对SQL Server中的XML数据进行insert、update、delete .
- OpenCV 2 学习笔记(9): 定义ROI(regions of interest):给图像加入水印
- Spring Boot中使用模板引擎参数化传参数
- C11全系产品涨价后 零跑汽车宣布T03全系车型调价
- IOS NSNotification 通知
- TBS X5内核SDK静态集成jar完美解决方案
- 11个最佳Ionic应用程序模板
- 【Proteus】单片机H桥驱动24V直流有刷电机
- Centos7清理垃圾文件或过期文件
- 2022年3月18到5月18的思考
- html导航栏的颜色怎么改变,我怎样才能改变导航栏的背景颜色
- web网页调用本地cs客户端程序exe
- Hadoop 3.1 2.x新特性之har归档
- CSDN周赛52期及53期浅析
- 4.3_deferred-init