Scala学习文档

来源:互联网 发布:mac软件打不开一直在跳 编辑:程序博客网 时间:2024/05/18 22:44

Scala学习文档

目录

1. Array

2. List

3. Map

4. break

5. if else

6. for

7. foreach

8. Option

9. Tuple

10. 代码规约

11. 请求接受数组或者Array内容

12. 

Array使用

1) Scala定义

   一般定义:      val array1 = Array[String]("str1","str2")

   特定长度的数组:val array2 = new Array[List[Int]](leng)

2) Array为不可变长,所以在具体操作时,可以定义ArrayBuffer,最后采用toArray来转换

val a:ArrayBuffer[String] = ArrayBuffer[String]()

a += “aa”

a.toArray

List使用

1) Scala定义

val list = List[String]()

2) 对应于Buffer,跟ArrayBuffer差不多

Map使用

1) Scala定义

val map = Map[Int, String](1->"str1", 2->"str2")

2) 可变的Map操作

val a = Map[String, String]()

a += (“a”->”b”)

break使用

1) 在Scala中,去掉了breakcontinue命令,原因很多需要用掉的地方都可以采用更加简洁的语句来实现。

// Java中……

int i = 0;          

boolean foundIt = false; 

while (i < args.length) { 

  if (args[i].startsWith("-")) 

  { 

    i = i + 1; 

    continue; 

  } 

  if (args[i].endsWith(".scala")) { 

    foundIt = true; 

    break; 

  } 

  i = i + 1; 

}

// Scala中……

var i = 0 

var foundIt = false 

while (i < args.length && !foundIt) { 

  if (!args(i).startsWith("")) 

  { 

    if (args(i).endsWith(".scala")) 

      foundIt = true 

  } 

  i = i + 1 

}

2) 在程序中,如果非要使用breakcontinue命令,

Scalajar包中,还包装了这样的插件

val mybreaks = new scala.util.control.Breaks

import mybreaks.{break, breakable}

breakable {

map.foreach{case(k, v){

if(k == 3){

break

}

}}

}

if else使用

Scala结果的返回是最后执行的一条代码的值,所以if else另外的一个功能,就像三目运算

val res = if(true) “aa” else “bb”

这样res的内容就是为“aa”,这里就不用定义resvar

for使用

for (arg <- args) 

  println(arg)

foreach使用

1) 对于Map的循环

val map = Map[Int, String](1->"str1", 2->"str2")

val mapResult = Map[String, String]()

map.foreach{ case( k , v ) =>{

  mapResult += ( k.toString -> v )

}}

2) 对于Array的循环

val array = Array['l','o','u','d','k','u','a','i','c','m']

array.foreach( a => { //这里a为临时变量,可以任意取名

//a…… 具体代码

})

3) 对于List的循环

val list = new List[int](1, 2) 

list.foreach( aa => {

println(aa)

})

Option使用

Option的重点,是在于判断所需要判断的值是否为null,这样避免有些对象直接取出后进行get方法。减少出现异常的几率。

1) 生成Option方法

//从数据库中取出记录,存在fid找不到对应记录的情况。

val res = this.getSqlMapClientTemplate().queryForObject("DbConfigDao.select", fid)

res match {

case null=> None //如果数据库不存在该fid对应的记录,则返回None

case _ => Some(res) //如果数据库存在记录,则返回res

}

这里的res是上面定义的变量名字。

2) 使用Option

//需要判断的变量resOption

var aa:String = null;

resOption match {

case Some(dd) => aa = dd //这里dd为任意变量,建议有意义的变量名

case None => 

}

Tuple使用

1) 生成Tuple(元组)

定义Tuple变量:

val pair = (999, “orange , I like”)

函数返回Tuple变量:

def getTupleType(): (Int, String) = {

(999, “orange , I like”)

}

val pair2 = get

2) 使用Tuple

取第 个值的内容其中 必须在Tuple

pair._i

pair2._i

注意:一般目前支持到Tupe22,即最多不能超过22

代码规约

请求接受数组或者Array内容

1) 当js需要传入Array数组进入controller时,就需要对内容进行封装,封装使用内容为

contentType: 'application/json'

data: JSON.stringify(uidArray) 

上面为ajax中的参数设置

接受时候,需要使用

@RequestBody uids: Array[String]

使用时,可以把Array中的String类型转换成为自己需要的使用

2) Var定义为val了在service这层@BeanProperty

var httpClientService: HttpClientService = null

流程

Service

Dao

继承SqlMapClientDaoSupport接口,由于java只能是单继承,所以

1. 

Ibatis

ibatis中,会配置

1. <sqlMap namespace="DbConfigDao">

这里定义此文件的namespace,在其他配置文件中,可以使用此名字调用此文件中的方法比如下面的insert、update

2. <typeAlias alias="DbConfig" type="com.nineteenlou.forum.dbconfig.bean.DbConfig"/>

别名:typeAlias,只是定义在文件中需要用到的Bean类型,这个可以方便在下面使用。也可以直接使用类名。

3. <resultMap id="DbConfigResult" class="DbConfig">

返回类型的定义,在这里如下面的<select id="selectList" resultMap="DbConfigResult">中resultMap的类型就是在这里定义,可以使放回出去的数据按照这个bean的类型。

4. <insert id="insert" parameterClass="DbConfig">

id定义为调用而使用,传入的参数类型为之前定义的别名,如果需要返回的话,则需要resultClass=”String”,即返回的为String类型

5. <update id="update" parameterClass="DbConfig">

Update insert可以自己选择返回参数

6. <select id="selectDSTablePre"  parameterClass="map" resultClass="String">

Select的参数有两种类型,一般情况下选择map形式的传递,可以resultClass选择一个对应需要的类型,如果需要返回bean的,可以自己定义。

Controller

Html

Aop


本文转自:https://docs.google.com/viewer?a=v&q=cache:peBoEoNQboAJ:infoofnote.googlecode.com/svn-history/r109/trunk/technology/Scala/scala.docx+scala+%E6%95%B0%E7%BB%84+%E9%95%BF%E5%BA%A6+%E5%A3%B0%E6%98%8E&hl=zh-CN&pid=bl&srcid=ADGEESgzzHw7V5Sm__ob4xBa8rKCT8cSEVOia_4vvkfAaSdhY_ylE0zSAIZd9Se-pkgkCj6lhXyxXYDXigCib2A3_9k_wpqrRlHyBhJ1xFgZRvD-AhMlMYTe02yREgyboWGpW8EjTO22&sig=AHIEtbRUyJNyrthJrqZBQk-Rod9cq9oZIQ&pli=1