Scala基础之for循环,函数,Lazy关键字
来源:互联网 发布:语音模拟软件 编辑:程序博客网 时间:2024/06/04 19:51
scala的for循环可以在一层for中直接实现像c,java中2层for的嵌套,for循环中有2个循环变量时,第一个循环变量作为外循环,第二个作为内循环,同时可以在for语句上加入条件表达式作为一种守卫
def main(args: Array[String]): Unit = { for(i <- 1 to 2;j <- 1 to 4) println(i*10+j) for(i <- 1 to 2;j <- 1 to 4 if i!=j) println(i*10+j) }
函数可以分为匿名函数和非匿名函数,可以直接将匿名函数赋值给一个变量a,通过a(x)的方式往这个匿名函数中传入参数x,函数的返回类型一般可以省略,因为scala有类型推导的功能,但在递归函数调用中一般不可以省略函数的返回类型
def main(args: Array[String]): Unit = { def add(x:Int) = x+100 val res=(x:Int) => x+200 println(add(2)) println(res(2)) def fac(n:Int):Int=if (n<=0) 1 else n*fac(n-1) println(fac(10)) }
在实际操作中,我们有时也希望向函数中只传递其中几个参数,未传递的参数有个默认值,此时只需要在形参后面加个=赋默认值即可,也可以通过指定形参的名字来传递参数,一般传参都是按位置来的,但很多语言都支持根据形参名传递参数,传递参数会覆盖掉=后面的默认值
def main(args: Array[String]): Unit = { def f_x(s:String,a:String="{",b:String="}")={ a+s+b } println(f_x("aa","<")) println(f_x("aa",b="<")) }
当然,可变参数在函数的传递中也是会见到的,这时参数类型后面要加*,通过提取符<-把可变参数中的每个值提取出来再进行操作,如下所示
def main(args: Array[String]): Unit = { def mysum(args:Int*)={ var res=0 for(item <- args) res+=item res } println(mysum(1,2,3,4,5)) }
下面谈谈scala中的lazy思想,变量名可以通过lazy修饰,被lazy修饰的变量只有在使用的时候才会真正去执行,比如下面打开一个在我硬盘上并不存在的文件,如果用lazy修饰的话,打开文件但不使用就不会报错,而不用lazy修饰则打开文件就会报错
def main(args: Array[String]): Unit = { //不会报错 lazy val file=Source.fromFile("E:\\zoin.txt"); //报错 //val file=Source.fromFile("E:\\zoin.txt"); println("this is the end") }
阅读全文
0 0
- Scala基础之for循环,函数,Lazy关键字
- Scala For 循环、函数进阶,lazy值使用
- Scala之for循环和函数进阶
- scala函数 for循环
- Scala之for循环
- Scala学习之For、Function、Lazy(4)
- scala 特性之一 lazy关键字
- Spark基础-Scala偏函数和lazy和异常
- Scala基础之函数
- scala基础4-for循环进阶
- Scala快速入门--For循环和函数
- Scala基础入门(十 ) Scala for循环使用方法
- java之for循环小Demo及函数基础
- Scala 之 函数----基础篇
- 【scala】Scala中lazy关键字的使用和理解
- 【Scala学习笔记】4. For、Function、Lazy
- java基础之for循环
- scala的for循环
- oracle创建用户
- Java 语言的发展历程
- TCP/IP 层次
- 【普及组_在线赛】最小与最大
- Java之I/O处理
- Scala基础之for循环,函数,Lazy关键字
- 基于Unity3D的相机功能的实现(七)—— 综合篇
- [POJ](2236)Wireless Network ---- 并查集
- Vim的升级与配置
- 1225: 字符串的修改
- Ubuntu 17.10 安装 cuda 9.0 之 deb
- transform 3D 变换
- PHP+MySQL+sphinx+scws实现全文检索
- MIME协议在邮件中的应用详解