弓背霞明剑照霜,秋风走马出咸阳。这篇文章主要讲述快学Scala 第二课 (apply, if表达式,循环,函数的带名参数,可变长参数,异常)相关的知识,希望能为你提供帮助。
apply方法是Scala中十分常见的方法,你可以把这种用法当做是()操作符的重载形式。
文章图片
像以上这样伴生对象的apply方法是Scala中构建对象的常用手法,不再需要使用new。
if 条件表达式的值就是跟在if或else之后的表达式的值,如果两者类型不同,选择各分支类型的公共超类型作为返回类型。
文章图片
if(x> 1) 1 相当于 if(x> 1) 1 else ()
你可以把()当做是表示“无有用值”的占位符,将Unit当做java的Void
如果你在写较长的语句,需要分行来写的话, 要确保第一行以一个不能用做语句结尾的符号结尾。通常来说一个比较好的选择是操作符:
【快学Scala 第二课 (apply, if表达式,循环,函数的带名参数,可变长参数,异常)】 "aa" + "bb"
+ "cc" //这样解析器会报错
"aa" + "bb" +
"cc" //这样才是正确的
Scala表达式用{}, 最后一个表达式的值就是块的值。
Scala循环while和for:
val a = for (i < - 1 to 10) { i }
val b = for (i < - 1 until 10) { i }
Scala break:
import scala.util.control.Breaks._object BreakDemo { def main(args: Array[String]): Unit = { breakable { for(i < - 1 to 10){ break }} } }
Scala for推导式,返回一个Vector集合
//Vector(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) val a = for (i < - 1 to 10) yield { i }
Scala函数的带名参数
def decorate(atr: String, left: String = "[", right: String = "]") = { left + atr + right }decorate("Hello", right = "> > > ]")
Scala变长参数
def writeName(name: String*) = { for (n < - name) { println(n) } }val se = Array("aa", "bb", "cc") writeName(se: _*)
当val被声明为lazy时,初始化被推迟,知道第一次取值的。
Scala异常
package com.citi.Lscalaobject FunDemo { def main(args: Array[String]): Unit = {try { //Vector(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) val a = for (i < - 1 to 10) yield { i } println(a) println(decorate("Hello", "> > > ]")) val b = -10 println(checkValue(b).getClass()) println(decorate("Hello", right = "> > > ]")) println(1 to 5) val se = Array("aa", "bb", "cc") writeName(se: _*) } catch { case t: Throwable => t.printStackTrace() case _: Exception => println("Exception") } finally { println("do finally") }}def checkValue(x: Int) = { if(x> 1) 1 else () }def decorate(atr: String, left: String = "[", right: String = "]") = { left + atr + right }def writeName(name: String*) = { for (n < - name) { println(n) } }}
推荐阅读
- Choosing between .NET Core and .NET Framework for server apps
- JavaFX打包到Android上
- android mvp高速开发框架介绍(dileber的简单介绍)
- Android-风格和主题
- @RequestMapping-限定参数映射
- 翻译View Frustum Culling --3 Clip Space Approach – Extracting the Planes
- Android--Handler的用法(在子线程中更新界面)
- 安卓中一句代码,解决拨号,定位,网页,卸载,安装,播放,邮件,短信
- Android零基础入门第18节(EditText的属性和使用方法)