首页 > 其他 > 详细

Scala练习笔记

时间:2015-11-22 17:19:23      阅读:413      评论:0      收藏:0      [点我收藏+]

 

技术分享

 

技术分享

 

技术分享

 

技术分享

 

JAVA中,举例你S是一个字符串,那么s(i)就是该字符串的第i个字符(s.charAt(i)).Scala中使用apply的方法

技术分享

JAVA与C++的?:操作符 等同于Scala的

if ( x > 0)  1 else -1

x>0 ? 1: -1 //JAVA或C++

在Scala中,每个表达式都有一个类型,如下:

if ( x > 0) "positive" else -1

其中一个分支是java.lang.String 而另一个分支是Int,他们的公共超类型是Any

 

使用如下会报错:

if(x > 0) 1 else if( x == 0) 0 else -1

改为

if(x > 0){ 1 }else if (x== 0) 0 else -1

 

高级for 循环  可以使用变量<- 表达式 的形式提供多个生成器,用分号将其隔开

技术分享

如果for循环的循环体以yield开始,则循环会构造出一个结合,每次迭代生成集合中的一值:

技术分享

每个生成器都自带一个守卫,以if开头的Boolean表达式

技术分享

可以任意多的定义,引入可以在循环中使用变量

技术分享

 

定义函数:Scala一般不需要声明返回值类型,会自己推断,但使用递归的时候 必须指定返回类型:

技术分享

默认参数和带名参数(什么鬼,Java的思想被颠覆)

技术分享

 

过程,Scala对于不返回值的函数有特殊的表示语法,如果函数体包含在花括号中但没有前面的=号,那么返回类型就是Unit

技术分享

或def box(s : String) : Unit = { ...} 显示声明Unit返回类型

 

数组:

声明一个空的数组缓冲,用+=在尾端添加元素,用()而不是用{} 移除用trimEnd

技术分享

也可在任意位置插入或移除元素 其中remove方法第二个参数为要删除多少个

技术分享

 

遍历数组 使用的是until ,它属于RichInt类的方法,返回所有小于(但不包括)上限的数字。

技术分享

 

常用算法

使用sum方法,元素类型必须是数值类型,要么是整型,要么是浮点型或者integer,decimal

sorted方法将数组或数组缓冲排序并返回经过排序的数组或数组缓冲

val b = ArrayBuffer(1, 7, 2, 9)
val bSorted = b.sorted(_ < _)

 

如果要显示数组或数组缓冲的内容,可以用mkString方法,它允许你指定元素之间的分隔符。toString返回的值就无意义了

技术分享

 

使用List 使用:: 把一个新元素组合到已有List的最前端,然后返回结果List

技术分享

 

使用元组Tuple:

与列表一样,元组也是不可变的,但与列表不同,元组可以包含不同类型的元素。而列表应该是List[Int]或List[String]的样子,元组可以同时拥有Int和String。元组很有用,比方说,如果你需要在方法里返回多个对象。Java里你将经常创建一个JavaBean样子的类去装多个返回值,Scala里你可以简单地返回一个元组。而且这么做的确简单:实例化一个装有一些对象的新元组,只要把这些对象放在括号里,并用逗号分隔即可。一旦你已经实例化了一个元组,你可以用点号,下划线和一个基于1的元素索引访问它.

 

技术分享

 

使用Set和Map

创建,初始化和使用可变集合

技术分享

 

Map是Scala里另一种有用的集合类。和集一样,Scala采用了类继承机制提供了可变的和不可变的两种版本的Map,,Map的类继承机制看上去和Set的很像。scala.collection包里面有一个基础Map特质和两个子特质Map:可变的Map在scala.collection.mutable里,不可变的在scala.collection.immutable里。

技术分享

 

函数式风格:

import scala.collection.mutable.Map

技术分享

 

更函数式的方式应该是定义对需打印的arg进行格式化的方法,但是仅返回格式化之后的字串

技术分享

 

Scala练习笔记

原文:http://www.cnblogs.com/yangsy0915/p/4986074.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!