推荐一本书 scala编程语言,有电子版,比较厚。
包(package com.xx.data)
支持嵌套,下层可以访问上层作用域中的名称
可串联
顶部标记
包对象
包可见性
包在任何地方都可以引入,作用域至该语句所在块的末尾
重命名引入成员(xx=>yy)
隐藏方法(xx=>_)
自动引入(java.lang._ scala._ Predef.)
/** * play *支持嵌套,下层可以访问上层作用域中的名称 * package com.chinahadoop{ * * package spark{ * } * 顶部标记 * package b * 包对象 * 包可见性 * 重命名引入成员 * import java.util.{hashMap => JavaHashMap} * 隐藏方法 访问不了它了 * hashMap=>_ * 自动引入 * java.lang._ scala._ Predef._ * _下划线你可以看作一个*星号 * 可以放到任何一个包中,非常灵活 * package aa.bb.cc.dd * class xxx{ * private[dd] adadad= { * * } * } * } */
模式匹配
标准用法(match)
使用守卫
匹配类型
package cn.chinahadoop.scala class Basic5 { } object Basic5 extends App { val value = 1 //match是有返回值的 val result = value match { case 1 => "one" case 2 => "two" case _ => "some other number" } println("result of match is :" + result) }
结果为:
result of match is :one
scala只要判断符合就不会继续往下执行,并不需要break或return。
package cn.chinahadoop.scala class Basic5 { } object Basic5 extends App { val value = 3 //match是有返回值的 val result = value match { case 1 => "one" case 2 => "two" case _ => "some other number" } println("result of match is :" + result) }
结果为:
result of match is :some other number
_代表通配符。
package cn.chinahadoop.scala class Basic5 { } object Basic5 extends App { // val value = 3 // //match是有返回值的 // val result = value match { // case 1 => "one" // case 2 => "two" // case _ => "some other number" // } // println("result of match is :" + result) val value = 3 val result = value match { case i if i == 1 => "one" case i if i == 2 => "two" case _ => "some other number" } println("result of match is : " + result) }
结果为:
result of match is : some other number
case还可以匹配类型
package cn.chinahadoop.scala class Basic5 { } object Basic5 extends App { // val value = 3 // //match是有返回值的 // val result = value match { // case 1 => "one" // case 2 => "two" // case _ => "some other number" // } // println("result of match is :" + result) // val value = 3 // val result = value match { // case i if i == 1 => "one" // case i if i == 2 => "two" // case _ => "some other number" // // } // println("result of match is : " + result) def t(obj: Any) = obj match { case x: Int => println("Int") case s: String => println("String") case _ => println("unknown type") } t(1) }
结果为:
Int
package cn.chinahadoop.scala class Basic5 { } object Basic5 extends App { // val value = 3 // //match是有返回值的 // val result = value match { // case 1 => "one" // case 2 => "two" // case _ => "some other number" // } // println("result of match is :" + result) // val value = 3 // val result = value match { // case i if i == 1 => "one" // case i if i == 2 => "two" // case _ => "some other number" // // } // println("result of match is : " + result) def t(obj: Any) = obj match { case x: Int => println("Int") case s: String => println("String") case _ => println("unknown type") } // t(1) t("1") }
结果为:
String
package cn.chinahadoop.scala class Basic5 { } object Basic5 extends App { // val value = 3 // //match是有返回值的 // val result = value match { // case 1 => "one" // case 2 => "two" // case _ => "some other number" // } // println("result of match is :" + result) // val value = 3 // val result = value match { // case i if i == 1 => "one" // case i if i == 2 => "two" // case _ => "some other number" // // } // println("result of match is : " + result) def t(obj: Any) = obj match { case x: Int => println("Int") case s: String => println("String") case _ => println("unknown type") } // t(1) // t("1") t(1L) }
结果为:
unknown type