博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Scala --- 第二章 控制结构和函数
阅读量:6841 次
发布时间:2019-06-26

本文共 1677 字,大约阅读时间需要 5 分钟。

hot3.png

输入图片说明

接下来的知识点,枯燥无味,但还是需要了解一下。。。

1、条件表达式

输入图片说明

$..>if(x > 0) 1 else -1

$..>val s = if(x>0) 1 else -1

$..>if(x>0) s=1 else s=-1

$..>if (x>0) "xx" else -1 //混合类型

//scala每个语句都有值和类型

$..>if(x>0) 1 //如果x <= 0 ???等价于下方

$..>if(x>0) 1 else()//class Unit,写做()

//如果想要换行必须使用{},否则编译器混淆

$..>if(x>0){1}

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

//如果粘贴代码块,无需担心,输入

$..>:paste

$..>ctrl + k //scala会整体处理粘贴的代码

2、语句结束

//scala从不要求“;”,但是有些时候需要

$..>if(n >0){r=r*n;n-=1}

//多行语句,操作符结尾不会被认为是结束

$..>... +

....

$..>if(..){ //使用{}

r = r*n n-=1

}

3、块表达式和赋值

输入图片说明

//块的最后表达式是block的值

$..>val dis={val dx=..;...;sqrt(2)}

//以下语言不可靠,赋值语句的值是(),()不能赋值给x

//赋值语句的值就是()---Unit

$..>x=y=1

4、Loop

输入图片说明

$..>while(n >0){

r = r * n

n -= 1

}

//scala没有for(;;)语句,只有如下的形式

for(i <- 1 to 10) //to的范围是闭区间[]

r = r * i

$..>for(i <- 0 until 10) //until是半开半闭开区间[)

r = r * i

输入图片说明

$..>for(ch <- "abc") sun +=ch

//scala没有break和continue语句

1.使用boolean变量

2.嵌套函数

5、高级Loop

$..>for(i<-1 to 3;j<- 1 to 3)print((10*i+i)+" ") //多个生成

//每个生成器都可以带条件

for(i<-1 to 3 ; j <- 1 to 3 if i !=j ) ...

12 13 21 23 31 32

//借助变量

$..>for(i<-1 to 3;from = 4-i;j<-from to 3)...

6、函数

  • 无返回值

输入图片说明

//方法是在对象上,而函数不是//函数定义指定名称、参数和body//必须指定参数类型def fac(n:Int)={  var r = 1  for(i<-1 to 10) r = r *1    r	//最后的表达式是函数的返回值}
  • 有返回值

输入图片说明

  • 递归函数

输入图片说明

7、变长参数

输入图片说明

def sum(args:Int*)={  var r = 0 for(arg<-args) r +=arg   r}val s = sum(1,2,4,5,6)val s = sum(1 to 5)	   //errorval s = sum(1 to 5:_*)      //right

8、Lazy values

输入图片说明

9、Exception

输入图片说明

//scala没有被检异常,不用声明抛出语句.//throw表达式的类型是Nothing,ifesle的类型不能是//Nothing,因此就是不为Nothing的分支类型throw new IllegalArgumentException("xx")try{  ...} catch{  case _:MalformedURLException=>.//不适用异常对象    case ex:IOException =>ex.printStackTrace()}

输入图片说明

try{  ...}finally{  in.close()}

转载于:https://my.oschina.net/u/3136594/blog/1631632

你可能感兴趣的文章
bash shell实现二进制与十进制数的互转
查看>>
精准测试
查看>>
Oracle11G_逻辑备份
查看>>
Linux正变得无处不在;应用大盘点
查看>>
IEEE期刊
查看>>
pssh使用
查看>>
索引优化系列十四--啥时分区索引性能反而低
查看>>
hive的变量传递设置
查看>>
apache-shiro杂记(三) 用了apache-shiro后,HttpSession.getServletContext() API无法正常工作了...
查看>>
Jquery的$命名冲突
查看>>
经常用到的JS 表单验证函数
查看>>
eclipse 中的 maven run configurations
查看>>
并查集
查看>>
无刷新读取数据库 (ajax)
查看>>
mysql事务介绍
查看>>
css(hr元素)水平线的定位
查看>>
Cisco路由交换--NAT详解一
查看>>
1.7Discuz_X3.2论坛软件搭建
查看>>
响应式设计的十个基本技巧
查看>>
linux 安装python MySQLdb
查看>>