十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本篇内容介绍了“Scala有哪些表达式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
我们提供的服务有:网站建设、成都网站设计、微信公众号开发、网站优化、网站认证、普陀ssl等。为成百上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的普陀网站制作公司
一、条件表达式
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有哪些表达式”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!