【scala】 scala 条件控制 和异常处理(二)
1.scala 变量定义 ,var val 区别。
var 定义可变变量
val 定义不可变变量,scala 推荐使用。相当于Java的final 变量.
scala中包含的基本数据类型详情如下表所示:
| 序号 | 基本类型 | 增强类型 | 大小 | 取值范围 |
|---|---|---|---|---|
| 1 | Byte | RichByte | 8-bit | -128 ~ 127 |
| 2 | Char | RichChar | 16-bit | 0 ~ 65535 |
| 3 | Short | RichShort | 16-bit | -32768 ~ 32767 |
| 4 | Int | RichInt | 32-bit | -2^31 ~ 2^31 -1 |
| 5 | Long | RichLong | 64-bit | -2^63 ~ 2^63 -1 |
| 6 | Float | RichFloat | 32-bit | |
| 7 | Double | RichDoube | 64-bit |
2.scala 条件控制 if else if else
3. for 增强和 yield类型推导
to ,until 遍历集合的区别
4.scala 异常处理
try catch {case ex: Exception=> e}finally{}
5. 可变参数方法定义
参数类型* *定义多个参数
6. def 方法定义的注意
def 方法名(参数):返回值={方法体}
返回值省略,默认 Any ,Any相当于java中的Object
object Control {
def main(args:Array[String]): Unit ={
val a=5
// scala 尽量不用return,最后一个表达式的值 作为值返回
val b = if(a<7){val c=a+1;c+3} else if (a==5) 5 else 3
println(b)
//数组初始化
val c:Array[String]=Array("a","b","d")
//变量定义, 变量名:变量类型
val d:String = forAry(c)
println(d)
//求和
val result= sum(23,32,32,32,32)
println(" sum result :"+result)
// 将整个区间作为参数序列来处理 :_*
val newResult = sum(1 to 10:_*)
println("sum newResult: "+newResult)
//数组格式化输出 toBuffer
println(yieldAry().toBuffer)
println("--------------------")
filter()
//异常
exception()
}
/**
* 遍历数组
* @param ary
* @return
*/
def forAry(ary:Array[String]):String={
val newBuilder=new StringBuilder
// to 是 i到 区间,包含开始和结尾
for(i<-10 to ary.length-1){
newBuilder.append(ary.apply(i))
}
// unit 是 0 到 length-1 之间
for(i<-0 until ary.length){
newBuilder.append(ary.apply(i))
}
//普通遍历
for(a<-ary) println( a)
newBuilder.toString()
}
/**
* yield 关键字 推导生成新的数组
* @return Array[Int]
*/
def yieldAry():Array[Int]={
val ary :Array[Int]= Array(1,32,3,31,43)
//until 从 0 到 ary.length-1 之间的下标
for(i<-0 until ary.length){
val d:Int=ary.apply(i)
val e= d.*(122);
// println(e)
}
//yield 类型推导为Array
for(arg<-ary) yield arg *2
}
/**
* 可变长参数定义 *
* @param args
* @return
*/
def sum(args:Int*):Long={
var result : Long=0
//for 循环遍历
for(arg<-args){
result += arg
}
return result
}
/**
* 数组过滤
*/
def filter(): Unit ={
//定義一個數組
val ary =Array(12,2,12,43,2,12,1)
//去重 过滤
//保留符合条件的元素 _.%(2)==0 保留偶数,
// map(_*2) 是各个元素乘以 2
val a = ary.distinct.filter(_.%(2)==0).map(_*2)
println(a.toBuffer)
println(a.sum)//元素求和
}
/**
* 异常处理
*/
def exception():Unit={
//定义一个定长的数组
val ary = new Array[String](2)
ary(0)="1234e"
var it = -2
try{
it = ary(0).toInt
}
catch {
case ex: FileNotFoundException => it = 0
case ex: NumberFormatException => it = 12
case ex:Exception => it = -3
}finally {
println(it)
}
}
}
【scala】 scala 条件控制 和异常处理(二)的更多相关文章
- Scala学习教程笔记一之基础语法,条件控制,循环控制,函数,数组,集合
前言:Scala的安装教程:http://www.cnblogs.com/biehongli/p/8065679.html 1:Scala之基础语法学习笔记: :声明val变量:可以使用val来声明变 ...
- Scala入门系列(二):条件控制与循环
条件控制与循环 if表达式 定义:if表达式是有值的,就是if或者else中最后一行语句返回的值. 例如:val isAdult = if (age > 18) 1 else 0 类型推断: ...
- Scala深入浅出实战经典-----002Scala函数定义、流程控制、异常处理入门实战
002-Scala函数定义.流程控制.异常处理入门实战 Scala函数定义 语句结束无分号 定义无参函数 def 函数名称(参数名称:参数类型)[:Unit=]{ 函数体 } 老师的代码 我的实际代码 ...
- 2.scala控制结构、函数、异常处理
2.scala控制结构.函数.异常处理---小书匠,在线编辑器,MARKDOWN,Evernote,文件版本 a:focus { outline: thin dotted #333; outline: ...
- Dream------scala--函数定义、流程控制、异常处理
Dream------scala--函数定义.流程控制.异常处理 一.函数的定义 1.新建工程
- Python的条件控制及循环
一.条件控制: 1.If语句的使用: Python中if语句的一般形式如下所示: 上图中: 如果 "score>=90" 为 True 将执行 "print(‘优秀 ...
- Shell学习(三)——Shell条件控制和循环语句
参考博客: [1]Shell脚本的条件控制和循环语句 一.条件控制语句 1.if语句 1.1语法格式: if [ expression ] then Statement(s) to be execut ...
- Python学习--04条件控制与循环结构
Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...
- python基础之条件控制与循环
Python3 条件控制 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户 ...
随机推荐
- 基于云端的通用权限管理系统,SAAS服务,基于SAAS的权限管理,基于SAAS的单点登录SSO,企业单点登录,企业系统监控,企业授权认证中心
基于云端的通用权限管理系统 SAAS服务 基于SAAS的权限管理 基于SAAS的单点登录SSO 基于.Net的SSO,单点登录系统,提供SAAS服务 基于Extjs 4.2 的企业信息管理系统 基于E ...
- .net dll类库 生成chm说明文档
效果图: 制作步骤: 1.下载Sandcastle http://shfb.codeplex.com/releases/view/105809 2.下载Html Help WorkShop http: ...
- 【html】param 以及 embed 的有关 flash 属性详解
本文主要介绍 param 和 embed 标签中有关 flash 的一些属性及其属性值. 首先我们需要知道 param 和 embed 标签是单独出现的,而不是成对出现的,下面的代码是一般 flash ...
- 如何将mysql表结构导出成Excel格式的(并带备注)另附转为word表格的方法
方法一: 1.使用一个MySQL管理工具:SQLyog,点击菜单栏“数据库”下拉的最后一项: 导出的格式如下: 2.要想转成Excel格式的只需手动将该表复制到Excel中去. 方法二: 1.以下用的 ...
- netable 禁用拖动
nestable在点击的时候,有一个拖动的状态被触发,会导致你给nestable上加的链接都会无效. 只要在最外层的li里加入一个class为:dd-nodrag,就不会被触发了.然后你在子菜单中就可 ...
- windows下安装和配置多个版本的JDK
https://jingyan.baidu.com/article/47a29f2474ba55c015239957.html 如何在windows下安装和配置多个版本的jdk,本文将带你在windo ...
- win7 64位操作系统中 Oracle 11g 安装教程(图解)
1.下载Oracle 11g R2 for Windows版本,下载地址如下 官方网站: http://download.oracle.com/otn/nt/oracle11g/112010/win3 ...
- Sword libcurl使用
libcurl编译 >> ./configure --prefix=/opt/soft/curl --disable-ldap --disable-ldaps >> make ...
- Debug 单步执行命令step into/step out/step over的区别
总结一下在debug中三种调试的区别: step into就是单步执行,遇到子函数就进入并且继续单步执行: step over是在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数 ...
- C# ?? 运算符是什么?
?? 运算符定义在将可空类型分配给非可空类型时返回的默认值. int? c = null; //若 c 为 null,则 d 为 -1,否则把 c 值赋予 dint d = c ?? -1;