函数和闭包
1.定义函数最通用的方法是作为某个对象的成员,这种函数被称为方法。
2.函数式编程风格:程序应该被解构成若干小的函数,每块实现一个定义完备的任务,组装成复杂的事物
3.局部函数可以定义在另外一个函数的内部,并且局部函数可以访问外部函数的属性
4.=>指明函数左边的东西转化成右边的东西
5.什么叫闭包:
一直一个函数f(x) = x + i ,让你求f(3) = 3 + i。
分析:要得到最终的函数值,你必须知道i的值。i称作开放项。
若上文中定义了 int i = 1 ,则可以得到f(3) = 3 + 1 = 4.
即函数值若想捕获i的值,这一过程被理解为做对函数执行“关闭”操作,所以叫闭包
6.scala的函数是头等函数
package com.scala.stu import scala.io.Source /** * 函数和闭包 */ object t_007 { def main(args: Array[String]): Unit = { /* * =>指明函数左边的东西转化成右边的东西 */ var increase = (x: Int) => {//{}代表代码块 println("this is one line") x + 1 } println(increase(10))//变量可以通过这种形式进行重新赋值,因为任何函数值都是扩展了若干的function的 var someNumbers = List(-11,-10,-5,0,5,10) //filter,这个方法选择集合类型里可以通过用户提供的测试的元素 someNumbers = someNumbers.filter { x =>x > 0 } //_是占位符 someNumbers = someNumbers.filter { _ > 0 } //foreach,每个集合类都能用的foreach方法,定义在特质Iterable中他是list,set,array,map的共有的超特质 someNumbers.foreach { x => print(x+" ") } someNumbers.foreach { println _} //_+_ 将扩展成带两个参数的函数字面量,多个下划线代表多个参数 //只有在需要函数类型的地方,scala才允许你省略这个仅用的_ val f = (_: Int) + (_: Int) println(f(1,2)) } //本地函数 def processFile(filename: String , width: Int) { def processLine(line: String){ println(filename + " :" + line.trim) } /* * def processLine(filename: String,width: Int , line: String){ println(filename + " :" + line.trim) } */ val source = Source.fromFile(filename) for (line <- source.getLines)//getLines返回枚举类型 processLine(line) } //柯里化 def curr(x: Int)(y: Int) = x+y def first(x:Int) = (y:Int) =>x + y }
相关推荐
Scala学习笔记,大全笔记
### Scala学习笔记(全) #### 一、Scala概述与特点 Scala是一种多范式的编程语言,旨在集成面向对象编程和函数式编程的各种特性。它运行于Java平台(Java虚拟机JVM),并且能够完全兼容所有的Java程序。这使得Scala...
在"scala学习笔记整理"中,我们可以深入探讨以下关键知识点: 1. **基础语法**:Scala的基础语法与Java有相似之处,但也有很多独特的特点。例如,它支持变量的不可变性(immutability),使用`val`声明常量,`var`...
### Scala学习笔记关键知识点 #### 1. “均码”哲学与并发编程 - **“均码”哲学**: 指的是Scala设计时遵循的一种设计理念,即尽量保持语言的统一性和简洁性,使得不同的功能和特性能够以一种相似的方式进行处理。...
[Scala学习笔记-中文资料] 从java角度看Scala
ScalaOverview.pdf ScalaTutorial.pdf ProgrammingInScala.pdf(这本是书) 博文链接:https://dogstar.iteye.com/blog/182673
4. 集合库:Scala的集合库设计精良,包含各种高效的数据结构,如List、Set、Map等。这些集合不仅支持传统的OOP操作,还提供了丰富的函数式API,如map、filter、fold等,方便进行数据处理。 5. 特性与模式匹配:...
4. 并发编程:Scala提供了Actor模型,这是一种轻量级的并发机制,使得处理并发问题变得更加简单和高效。 5. Akka框架:Akka是用Scala编写的开源框架,用于构建高度可扩展、容错的应用程序,它充分利用了Scala的...
Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,被广泛应用于大数据处理、分布式计算和高性能应用开发。...每个文档都配有实例和注释,便于理解和实践,是Scala学习者宝贵的资源。
以上内容覆盖了 Scala 编程语言的核心知识点,从基本语法到高级特性,为初学者提供了一个全面的学习指南。Scala 是一门功能强大且灵活的语言,适合于构建大型的、复杂的软件系统。希望这些知识点能够帮助读者更好地...
Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。 Scala 运行在Java虚拟机上,并兼容现有的Java程序。 Scala 源代码被编译成Java字节码,所以它可以运行于...
在"scala-study"这个文件夹中,可能包含的子文件有练习代码、笔记、教程文档等,这些都是学习过程中的宝贵资料。通过这些资源,初学者可以逐步了解如何使用Scala编写Spark程序,包括如何创建SparkSession、加载数据...
Scala学习资源Scala编程语言抓住了很多开发者的眼球。如果你粗略浏览Scala的网站,你会觉得Scala是一种纯粹的面向对象编程语言,而又无缝地结合了命令式编程和函数式编程风格。Christopher Diggins认为: 不太久...
读书笔记:快速入手的Scala基础语法学习笔记
本教程“scala-learn:scala学习笔记”旨在帮助初学者深入理解Scala的基础知识,同时也为有经验的程序员提供了一个复习和提升的平台。 1. **基础语法与数据类型** Scala的基础语法简洁而强大,包括变量声明(val和...
### Scala的操作笔记 #### 一、课程目标与学习路径 本课程旨在通过三个阶段的目标来逐步深入学习Scala语言,最终能够灵活运用Scala进行Spark程序的开发,并具备阅读Spark内核源码的能力。 - **初级目标**:掌握...