scala语法 基础3
来源:互联网 发布:淘宝店铺花钱解冻 编辑:程序博客网 时间:2024/05/18 17:43
/** * 高阶函数 */object Study7 extends App{//函数定义 def add(a:Int ,b:Int) = { a + b }// var c = add(1,2)// println(c) //var func1 = add _ //把一个函数的实现传递给另外一个函数 //println(func1(1,2)) //var func2 = (x :Int) => x + 3 //传递一个匿名函数给给一个变量 //var func3 = (x :Int) => {x + 3} //传递一个匿名函数给给一个变量 //var func4 = (x :Int) => (x + 3) //传递一个匿名函数给给一个变量// for(i <- arr) // Map[String,Int]("zhangsan" -> 12) //println(func3(3))// def func5(a:Int ,f:(Int)=>(Int)) = {// f(a) + 1// }// println(func5(4,(x:Int) => {x + 2})) //传递一个匿名函数给该函数 //调用函数封装举例// def CPU(a:Int) = {// a * 8// }// def GPU(a:Int) = {// a + 9// }// def compute(men:Int,CPU:(Int)=>(Int),GPU:(Int)=>(Int)) = {// men + CPU(2) + GPU(2) // }// println(compute(4,CPU,GPU))// def func6(f:(Int)=>(Int)) = {// f(1)// }// println(func6(_ + 2)) //简写条件:1.只有一行代码 2.只有一个形参 3.把匿名函数作为形参// println(func6(_ + _)) //总结“_” :// 1.代表数组每一个元素// 2.指的是传递是确切的一个函数 而不是忘记给该函数传递参数// 3.元组的元素取值 //思考题// def func7 (x :Int ,y:Int) = {// (y : Int) => {// x + y// } + 2// }// println(func7(3,4)(2)) //一些有用的函数 map foreach reduceLeft // (1 to 9).map("*" * _).foreach(println _)// var c = (1 to 3).reduceLeft(_ + _) //1 + 2 + 3// println(c) }/** * 构造顺序 */class Person1 { val age:Int = 10 var arr:Array[Int] = new Array[Int](age) //调age字段的getter方法}//class student1 extends Person1{// override lazy val age:Int = 18 //如果覆盖的父类不是抽象类 必须要写override//}class student1 extends { //解决办法③ override val age:Int = 18 //如果覆盖的父类不是抽象类 必须要写override} with Person1//特质/*trait student2 { var a:Int = 10 var b:Int}trait student3{ def show = "123"}class student4 extends student2 with student3{ var b:Int = 1}*/object Test72 extends App{ var c = new student1 println(c.age) println(c.arr.length) //输出18 0 解决办法:1.字段前面添加final 2.字段前面添加lazy 3.解决办法③ //原因:// a.主构造器和class类交织在一起// b.子类中使用了override覆盖超类中的字段,构造子类时超类的字段值会被覆盖// c.student1类作为student1的主构造器,调用了超类的Person1的主构造器// d.首先,构造器将age值设置为10// e.接着代码往下走,为了初始化arr数组,调用了age的getter方法// f.而age字段被重写了,也就是说getter方法被重写了// g.被重写的getter方法还没有被初始化,确切说就是字段age还是对象在被分配空间时所有整型字段的初始值// h.arr数组长度被设置为0// i.子类Student1类构造器执行,age被赋值为18}
0 0
- scala语法 基础3
- Scala基础语法-3Map
- Scala 基础语法代码
- scala基础语法
- scala基础语法-集合
- Scala 基础语法
- scala 基础语法
- scala 语法 基础1
- scala语法 基础2
- Scala基础语法
- scala基础语法
- Scala基础语法笔记
- scala语法 基础4
- Scala 基础语法入门
- Scala 语法基础
- Scala基础语法2
- 三. Scala基础语法
- scala基础语法
- keil MDK之RTX的消息邮箱的API函数
- Codeforces Round #297 (Div. 2) 525C Ilya and Sticks(脑洞)
- Android 2D 绘图
- linux学习书籍和路线推荐
- iOS图文混排的简易实现
- scala语法 基础3
- 欢迎使用CSDN-markdown编辑器
- 求字符串最长连续不重复的字串
- win7升级Win10之360百度等升级助手均因系统未激活不可升级
- maven依赖的全局排除
- 软件工程专业开始学习嵌入式在STC89C52RC/AT89S52和标准8051单片机的一些疑惑
- 防Ddos文献之敌情篇-DDoS攻击原理
- android sqlite讲解(一)
- 集合Map