val hostPort = ("localhost", 80)
hostPort._1
hostPort._2
hostPort match {
case ("localhost", port) => ...
case (host, port) => ...
}
scala> val h2 = "localhost"->80
h2: (String, Int) = (localhost,80)
scala> h2._1
res35: String = localhost
scala> h2._2
res36: Int = 80
scala> val (host,port) = h2
host: String = localhost
port: Int = 80
val t = (1 , 3.3 , "ews")
val value = t._2//get
val (fir ,sec , thir) = t
val (fir ,sec , _) = t//第三个不需要
"New York" .partition( _.isUpper)//("NY","ew ork")
map
//不可变
val scores = Map( "alice" -> 10 , "Bob" -> 3)
val scores = Map( ("alice" ,10) , ("Bob" , 3))
//可变
val scores = scala.collection.mutable.Map("alice" -> 10 , "Bob" -> 3)
val scores = scala.collection.mutable.HashMap[String , Int ]
//获取值
scores("Bob")
scores.getOrElse("Bob" , 0)
//set(可变)
scores("Bob") = 10
score += ("Bob"->10,"Fred" ->7)
for ((k,v) <- scores) //处理
List
set
Set(1,2,3)
Seq
Tuple
map
方法
Traversable
下面所有方法在子类中都是可用的。参数和返回值的类型可能会因为子类的覆盖而看起来不同。
这里是函数组合子定义的地方。
def map [B] (f: (A) => B) : CC[B]
返回每个元素都被 f 转化的集合
def foreach[U](f: Elem => U): Unit
在集合中的每个元素上执行 f 。
def find (p: (A) => Boolean) : Option[A]
返回匹配谓词函数的第一个元素
def filter (p: (A) => Boolean) : Traversable[A]
返回所有匹配谓词函数的元素集合
划分:
def partition (p: (A) ⇒ Boolean) : (Traversable[A], Traversable[A])
按照谓词函数把一个集合分割成两部分
def groupBy [K] (f: (A) => K) : Map[K, Traversable[A]]
转换:
有趣的是,你可以转换集合类型。
把映射转换为一个数组,您会得到一个键值对的数组。
与Java
双向转换:
此外,也提供了以下单向转换
选项 Option
Option 是一个表示有可能包含值的容器。 Option基本的接口是这样的:
Write
instead of
write
instead of
拉链操作
类
//getter/setter age= / age_=
私有字段,但是如下,Counter对象之间可以互相访问
如果想要完全变成只能访问本对象
private[this] var value= 0
Bean 属性
主构造
抽象类
特质(Traits)
通过with关键字,一个类可以扩展多个特质:
特质是可以有实现的
对象
也叫单例对象,单例对象用于持有一个类的唯一实例。通常用于工厂模式