Scala有哪些表达式

发布时间:2021-12-08 15:29:22 作者:iii
来源:亿速云 阅读:124

本篇内容介绍了“Scala有哪些表达式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、条件表达式

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

“Scala有哪些表达式”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. Scala基本语法有哪些
  2. 聊聊JavaScript和Scala的表达式 Expression

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

scala

上一篇:Kafka日志清理策略有哪些

下一篇:Cochran-Mantel-Haenszel检验在关联分析中的应用是怎样的

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》