用Scala開發項目大概有4個月了,當初選擇Scala的時候出於兩點考慮:一是我對Java還比較熟悉,可以讓我很快上手;二是Scala簡潔的語法,可以讓我少寫很多代碼。下面是本人的一些總結列表。
1.Scala的官方網站http://www.scala-lang.org/,Scala Eclipse的插件地址http://scala-ide.org/
2.推薦一篇寫的很好的文章http://qiujj.com/static/Scala-Handbook.htm
3. 一個用於實現try finally關閉資源的trait
1 trait Disposable {
2 def using[T <: { def close(): Unit }](closable: T)(block: T => Unit) {
3 try {
4 block(closable)
5 } finally {
6 closable.close()
7 }
8 }
9 }
2 def using[T <: { def close(): Unit }](closable: T)(block: T => Unit) {
3 try {
4 block(closable)
5 } finally {
6 closable.close()
7 }
8 }
9 }
一個簡單使用Disposable的例子:
1 def execute(dataSource: DataSource,sql: String) = {
2 using(dataSource.getConnection()) { conn =>
3 {
4 using(conn.prepareStatement(sql)) { st =>
5 {
6 st.execute()
7 }
8 }
9 }
10 }
11 }
2 using(dataSource.getConnection()) { conn =>
3 {
4 using(conn.prepareStatement(sql)) { st =>
5 {
6 st.execute()
7 }
8 }
9 }
10 }
11 }
4. 創建一個console app,只需要extends App就可以:
1 object TestApp
extends App {
2 println("test")
3 }
2 println("test")
3 }
5. 常用循環
從0打印到5
1
for (i <- 0 to 5) {
2 println(i)
3 }
2 println(i)
3 }
從0打印到4
1
for (i <- 0 until 5) {
2 println(i)
3 }
2 println(i)
3 }
foreach的用法
1 val array = Array(0, 1, 2, 3, 4, 5)
2
3 array.foreach(i => println(i))
4 array.foreach(println(_))
5 array.foreach(println)
2
3 array.foreach(i => println(i))
4 array.foreach(println(_))
5 array.foreach(println)
6.打印Map元素
1 val map = Map(0 -> 0, 1 -> 1, 2 -> 2, 3 -> 3, 4 -> 4, 5 -> 5)
2
3 map.foreach {
4 case (key, value) => {
5 println("key:" + key + " value:" + value)
6 }
7 }
2
3 map.foreach {
4 case (key, value) => {
5 println("key:" + key + " value:" + value)
6 }
7 }
7.集合常用操作
+= 添加元素
++ 合並集合
drop(n) 移除前n個元素
take(n) 獲取前n個元素
filter(condition) 獲取指定condition的元素
1 val array1 = Array(0, 1, 2, 3, 4, 5)
2 val array2 = Array(6, 7, 8, 9)
3 val array3 = array1 ++ array2
4
5 array3.foreach(println)
6 array3.take(1).foreach(println)
7 array3.drop(1).foreach(println)
8 array3.filter(_ != 1).foreach(println)
2 val array2 = Array(6, 7, 8, 9)
3 val array3 = array1 ++ array2
4
5 array3.foreach(println)
6 array3.take(1).foreach(println)
7 array3.drop(1).foreach(println)
8 array3.filter(_ != 1).foreach(println)
8.類的定義
1
class Item(val id: String, val imgwidth: Int, val imgheight: Int) {
2
3 }
2
3 }
當構造中沒有使用val時,是無法獲取對象對應屬性;使用val只能get,使用var可以get和set