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)相关推荐

  1. Scala 学习笔记

    Scala 学习笔记 1 object func_exp { 2 println("Welcome to the Scala worksheet") //> Welcome ...

  2. Scala学习笔记04:内建控制结构

    Scala学习笔记04:内建控制结构 scala提供的控制结构并不算多,因为在函数式编程中,可以自己开发出各种功能的控制结构,所以scala提供的原生控制结构仅仅够用为止. 1.if - 判断 if是 ...

  3. Scala学习笔记03:操作符

    Scala学习笔记03:操作符 一.scala中操作符与方法的等价性 scala中操作符即方法.方法即操作符.scala中操作符其实是普通方法调用的另一种表现形式,运算符的使用其实就是隐含地调用对应的 ...

  4. Scala学习笔记02:数据类型、常量与变量

    Scala学习笔记02:数据类型.常量与变量 一.数据类型 1.基本数据类型 Byte 字节型 Short 短整型 Int 整型 Long 长整型 Char 字符型 String 字符串 Float ...

  5. Scala学习笔记(三)

    Scala学习笔记(三) 一.模式匹配 1. 简单模式匹配 2. 匹配类型 3. 守卫 4. 匹配样例类 5. 匹配数组 6. 匹配列表 7. 匹配元组 8. 变量声明中的模式匹配 8.1 获取数组中 ...

  6. Scala学习笔记(一)

    Scala学习笔记(一) 一.Scala简介 二.Scala安装与配置 1. 安装JDK 2. 安装Scala SDK 3. 安装IDEA插件 三.Scala解释器 1. 启动Scala解释器 2. ...

  7. 机器学习(三)--- scala学习笔记

    Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编程和函数式编程的各种特性. Spark是UC Berkeley AMP lab所开源的类Had ...

  8. Scala学习笔记-环境搭建以及简单语法

    关于环境的搭建,去官网下载JDK8和Scala的IDE就可以了,Scala的IDE是基于Eclipse的. 下面直接上代码: 这是项目目录: A是scala写的: package first impo ...

  9. Scala学习笔记总结

    Scala学习网站:https://www.runoob.com/scala/scala-intro.html scala总结: Scala编程语言学习总结_hjy1821的博客-CSDN博客_sca ...

  10. Scala学习笔记-方便查找使用 为Spark学习打基础

    Scala学习 注意 伊始 为什么是Scala 网课 环境 电脑环境安装 关于版本的声明 我的环境和版本 IDEA插件安装 IDEA关联Scala源码 基础部分1 文档注释和生成 字符串的三种输出 变 ...

最新文章

  1. Docker Compose 配置文件详解
  2. matplotlib画图中文显示
  3. 图解SQL子查询实例
  4. 常用的JVM调优参数总结汇总【随时查阅学习】
  5. CentOS 7 Flannel的安装与配置
  6. 如何对SQL Server中的XML数据进行insert、update、delete .
  7. OpenCV 2 学习笔记(9): 定义ROI(regions of interest):给图像加入水印
  8. Spring Boot中使用模板引擎参数化传参数
  9. C11全系产品涨价后 零跑汽车宣布T03全系车型调价
  10. IOS NSNotification 通知
  11. TBS X5内核SDK静态集成jar完美解决方案
  12. 11个最佳Ionic应用程序模板
  13. 【Proteus】单片机H桥驱动24V直流有刷电机
  14. Centos7清理垃圾文件或过期文件
  15. 2022年3月18到5月18的思考
  16. html导航栏的颜色怎么改变,我怎样才能改变导航栏的背景颜色
  17. web网页调用本地cs客户端程序exe
  18. Hadoop 3.1 2.x新特性之har归档
  19. CSDN周赛52期及53期浅析
  20. 4.3_deferred-init

热门文章

  1. MySql安装后在服务管理器里边找不到MySql服务项的解决办法(win10)
  2. python-全栈开发-前方高能-内置函数
  3. C# DataGrid 控件在winform里显示行号
  4. Reactive Extensions简介一
  5. 如何跟各种人解释什么是产品经理
  6. pmcaff2013产品经理时尚文化屌丝style--马克杯投票。
  7. 剑指offer:栈的压入、弹出序列
  8. 场景多、变种快、粒度细,网易易盾是如何有效解决这些内容安全难题的?
  9. Spring Boot 入门(五):集成 AOP 进行日志管理
  10. VS Code 和 Sublime Text 3 安装及常用插件安装