快学Scala 第二课 (apply, if表达式,循环,函数的带名参数,可变长参数,异常)...
apply方法是Scala中十分常見的方法,你可以把這種用法當做是()操作符的重載形式。
像以上這樣伴生對象的apply方法是Scala中構(gòu)建對象的常用手法,不再需要使用new。
?if 條件表達式的值就是跟在if或else之后的表達式的值,如果兩者類型不同,選擇各分支類型的公共超類型作為返回類型。
??if(x>1) 1 相當于?if(x>1) 1 else ()?
你可以把()當做是表示“無有用值”的占位符,將Unit當做Java的Void
如果你在寫較長的語句,需要分行來寫的話, 要確保第一行以一個不能用做語句結(jié)尾的符號結(jié)尾。通常來說一個比較好的選擇是操作符:
?"aa" + "bb"?
+ "cc" //這樣解析器會報錯
"aa" + "bb" +?
"cc" //這樣才是正確的
Scala表達式用{}, 最后一個表達式的值就是塊的值。
Scala循環(huán)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推導(dǎo)式,返回一個Vector集合
// Vector(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)val a = for (i <- 1 to 10) yield { i }Scala函數(shù)的帶名參數(shù)
def decorate(atr: String, left: String = "[", right: String = "]") = {left + atr +right}decorate("Hello", right = ">>>]")Scala變長參數(shù)
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 = -10println(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)}}}?
轉(zhuǎn)載于:https://www.cnblogs.com/AK47Sonic/p/7255600.html
總結(jié)
以上是生活随笔為你收集整理的快学Scala 第二课 (apply, if表达式,循环,函数的带名参数,可变长参数,异常)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 15种主要编程语言介绍及应用场合
- 下一篇: 从最小二乘到岭回归(Ridge Regr