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中,去掉了break及continue命令,原因很多需要用掉的地方都可以采用更加简洁的语句来实现。
// 在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) 在程序中,如果非要使用break和continue命令,
在Scala的jar包中,还包装了这样的插件
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”,这里就不用定义res为var。
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
取第 i 个值的内容其中 i 必须在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
- Scala学习文档
- java程序员学习scala前必看的技术文档(1)
- java程序员学习scala前必看的技术文档(2)
- java程序员学习scala前必看的技术文档(3)
- scala 参考文档
- scala文档阅读笔记
- scala学习
- Scala 学习
- scala 学习
- Scala学习
- Scala学习
- scala学习
- Scala 学习
- scala学习
- SCALA学习
- scala学习
- scala学习
- 学习SCALA
- HOW TO:在 Visual C# .NET 中设置窗口挂钩
- paip.svn使用小结
- MYSQL常用命令
- 关于初学者该选择学习ARM7还是ARM9的一点建议
- 视图合并(View Merging)
- Scala学习文档
- 暑假闭关计划
- Algorithms 学习笔记04 Sort
- paip.提升开发效率之查询界面
- ORA-04031错误的解决思路
- windowsphone7 消息推送Demo
- 关于windows64位与32位操作系统的浅见(初学者,第一篇博客)
- 为什么基类指针指向派生类是安全的,而派生类指向基类则是不安全的
- Android 实现异步加载图片