/**
* 高阶函数
*/
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
}
相关推荐
CVE-2017-7921漏洞深度剖析:从身份验证绕过到实战复现与防御
身份验证是Web应用安全的核心防线,其逻辑缺陷可能导致严重的未授权访问。身份验证绕过漏洞的原理在于,应用程序对特定请求路径或API接口的访问控制策略存在疏漏,未能执行有效的会话或令牌校验。这类漏洞的技术价值在于,攻击者无需凭证即可直接访问受保护的后端资源,从而获取敏感信息或执行未授权操作,对系统机密性、完整性构成直接威胁。在物联网和安防监控领域,大量网络摄像头、录像机等设备暴露于公网,其Web管理界面便成为常见攻击面。本文聚焦于安防设备中一个经典的CVE-2017-7921身份验证绕过漏洞,通过剖析其技术原
Scala入门3之【条件表达式、循环】
条件表达式、循环1、条件表达式1.1 if 语句1.2 if...else 语句1.3 if...else if...else 语句1.4 if...else 嵌套语句 1、条件表达式 \quad \quad条件表达式就是if表达式,if表达式可以根据给定的条件是否满足,根据条件的结果(真或假)决定执行相应的操作 1.1 if 语句 \quad \quadif 语句有布尔表达式及之后的语句块组成。 语法: if(布尔表达式) { // 如果布尔表达式为 true 则执行该语句块 } 例子: scal
搞定8GB/s数据流:一个FPGA工程师的XDMA驱动调优实战(附避坑清单)
本文详细记录了FPGA工程师在XDMA驱动调优过程中实现8GB/s高带宽数据流的实战经验。通过优化DDR访问、中断响应、DMA映射等关键环节,解决了PCIE数据采集卡在高带宽场景下的性能瓶颈,并提供了实用的避坑清单和技术方案。
Scala系列——Scala入门篇
一、基本语法 1、声明变量 object VariableDemo { def main(args: Array[String]) { //使用val定义的变量值是不可变的,相当于java里用final修饰的变量 val i = 1 //使用var定义的变量是可变得,在Scala中鼓励使用val var s = "hello" //Scala编译器...
海思Hi3519AV100 sensor移植实战:IMX586驱动调试与硬件验证全流程
本文详细解析了在海思Hi3519AV100平台上移植索尼IMX586传感器的全流程实战。内容涵盖从硬件I2C通信验证、驱动代码移植与修改,到内核配置、时钟设定,以及使用示波器进行硬件信号深度验证和ISP图像调优等关键步骤,为开发者提供了一套清晰、可复现的sensor移植与调试方法。
黏菌优化算法(SMA)详解:从生物智能到优化引擎
黏菌优化算法(SMA)是一种新型生物启发式优化算法,模拟多头绒泡菌的智能觅食行为。该算法包含接近食物、包围食物和抓取食物三个阶段,通过数学模型将生物行为转化为优化过程。SMA采用权重自适应机制和参数振荡模型实现探索与开发的平衡,具有参数简单、收敛性好等优势。算法可通过MATLAB/Python实现,并应用于函数优化、工程设计和神经网络训练等领域。研究表明SMA在求解复杂优化问题时表现优异,未来可通过混沌增强、混合策略等方式进一步提升性能。
spark第三天(十天)
一.Spark函数详解系列之RDD基本转换 RDD:弹性分布式数据集,是一种特殊集合 ‚ 支持多种来源 ‚ 有容错机制 ‚ 可以被缓存 ‚ 支持并行操作,一个RDD代表一个分区里的数据集 RDD有两种操作算子: Transformation(转换):Transformation属于延迟计算,当一个RDD转换成另一个RDD时并没有立即进行转换,仅仅是记住了数据集的逻辑操作 ...
hwasan实例分析踩内存之一:camx进程stack tag-mismatch的三种解决方案
hwasan实例分析踩内存之一:camx进程stack tag-mismatch的三种解决方案。
Scala基础语法入门(五)Scala循环控制第一篇
Scala中的For循环1、范围数据循环(to)2、范围for循环 (range)3、范围for循环 (until)4、循环步长5、循环守卫6、循环嵌套7、引入变量8、循环返回值9、for循环练 一层循环打印出九层妖塔
ABAP CDS Time Functions 全面解析:用 TIMS_IS_VALID 护航时刻字段的正确性
摘要:本文深入解析ABAP CDS时间函数TIMS_IS_VALID的应用,重点介绍其在企业系统时间字段校验中的关键作用。文章指出无效时间数据会导致业务流程混乱,而CDS层校验能有效减少重复逻辑。详细说明TIMS类型格式要求、空值处理规则,并提供两种工程实现方案:在CDS视图中直接派生校验列,或通过ABAP SQL在内存表中批量验证。最后给出可直接运行的代码示例,包括一个ABAP报表演示内存表验证,以及一个CDS View Entity实现系统时间自动映射与校验,帮助开发者在业务场景中快速落地时间校验功能。
ESP32S3接入讯飞在线语音识别教程及配套源代码
本文介绍了如何使用ESP32-S3开发板实现讯飞在线语音识别功能。首先,需要准备硬件设备,包括ESP32-S3开发板、麦克风模块、MicroSD卡模块和扬声器模块。接着,安装Arduino IDE并配置ESP32-S3开发环境,注册讯飞开放平台账号并获取API凭证。然后,通过I2S接口连接麦克风模块,并编写代码实现语音录制、Base64编码、API请求和识别结果处理。代码包括初始化WiFi、麦克风、系统时间,以及录制语音、发送请求、解析响应等功能。最后,通过按键触发录音,并将识别结果输出到串口。
C语言中位右移,左移,按位与,按位异或,按位或,含义
1. >>= 意思为:右移后赋值 代码示例为: x = 0x08; x >>=3; 右移后结果为: 0000 0001 2. <<= 意思为:左移后赋值 代码示例为: x = 0x08; x <<=3; 左移后赋值结果为: 0100 0000 3. &= 意思为:按位与后赋值 代码示例为: x = 0x02...
使用STM32制作智能窗帘控制
以上就是一个简单的基于STM32的智能窗帘控制代码案例。通过感知光线强度和控制步进电机的旋转,我们可以实现智能窗帘的自动开启和关闭。通过定时器的中断来控制步进电机的旋转,从而实现窗帘的开启和关闭动作。最后,我们需要实现主函数和中断函数。在主函数中,我们需要初始化硬件资源,然后进入一个无限循环来不断检测光敏电阻的值,并根据其值来控制窗帘的开启和关闭。接下来,我们需要编写功能函数,用于控制窗帘的开启和关闭。然后,我们需要配置STM32开发环境,并创建一个新的工程。接下来,我们初始化相关的硬件资源。
Scala基础语法3
数组的定义 //数组的定义,定义一个长度固定的数组,内容可变 交互式窗口中: 1.val arr = new Array[Int](3) //括号里放的是长度 arr(0) = 100 改变了内容 2.val arr = Array[Int](1,3,4,7) //括号里放的是具体的内容 /** * 数组为什么不用new ,其实这里面隐藏地调用了apply...
锂电池充电器电路设计 里面有电路
锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。
lwip-2.0.3
lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。
Scala学习系列笔记3 - Scala基础语法
Scala学习系列笔记3 - Scala基础语法IF-ELSE语句循环语句for循环do-while与while循环模式匹配 IF-ELSE语句 与其他的语言的基本一致 // 基本语法格式: if(布尔表达式1) { //如果布尔表达式1为true,则执行该语句 } else if(布尔表达式2) { //如果布尔表达式2为true,则执行该语句 } else { //如果上述条件为false,则执行该语句 } 实例: object IfelseTest{ def main(args:Array[
怀旧版电脑GBC模拟器
再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。
Scala基础(3) 基础语法
3 数据结构 3.1 容器(Collection) Scala提供了一套丰富的容器(Collection)包括List、Array、Set和Map等;容器可以分为有序和无序,可变和不可变等不同容器类别。 Scala用了三个包来组织容器,分别是scala.collection、scala.collection.mutable(可变容器)和scala.collection.immutable(不...
Scala基础语法(3)
Scala 内置控制结构特地去掉了 break 和 continue,是为了更好的适应函数式编程,推荐使用函数式的风格解决break 和continue 的功能,而不是一个关键字。for 推导式有一个不成文的约定:当 for 推导式仅包含单一表达式时使用圆括号, 当包含多个表达式时,一般每行一个表达式,并用花括号代替圆括号。循环守卫,即循环保护式(也称条件判断式,守卫)。保护式为 true 则进入循环体内部,为false 则跳过,类似于continue。代码案例:输出1-5中不等于3的值。
3.Scala语法01 - 基础语法
scala——基础语法:3. 数组
数组: 定义数组: var s = new Array[Int](10) 即创建一个Int类型的长度为10的数组,可以不写new和类型,如: var s = Array("tom","jerry") s(0) //注意下标用的是小括号,因为中括号用来表示数组类型了 可变数组 ArrayBuffer: Array是定长数组,而ArrayBuffer是可变数组。ArrayBuffe...
从新手到高手:Scala函数式编程完全指南,Scala 基础语法(3)
如果你之前是一名 Java 程序员,并了解 Java 语言的基础知识,那么你能很快学会 Scala 的基础语法。 Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的。 我们可以认为 Scala 程序是对象的集合,通过调用彼此的方法来实现消息传递。接下来我们来理解下,类,对象,方法,示例变量的概念:
scala-Unit-3-Scala基础语法2
一、定义方法、函数、及方法转换为函数 1.方法的定义: def 方法名(参数1:数据类型,参数2:数据类型...):返回值类型 ={ } 2.定义函数: val h1 = (a:Int,b:Int) => {a * b} 3.方法转换为函数(在Windows下的命令行操作) def m2(a:Int,b:Int):I...
Scala基础语法-3Map
Map 声明 val map = Map("a"->1, "b"->2) val map1 = Map(("a", 1),("b", 2)) 默认import scala.collection.immutable.Map,所以不能改变值 map(“b”) = 22 会报错根据key获取value println(map("b")) println(map.getOrElse("c", 0)
Spark学习(3)——scala基础语法
scala概述 scala是一门多范式编程语言,集成了面向对象编程和函数式编程等多种特性。 scala运行在虚拟机上,并兼容现有的Java程序。 Scala源代码被编译成java字节码,所以运行在JVM上,并可以调用现有的Java类库 scala解释器的使用 1,REPL:Read(取值) ->Evaluation(求值)->Print(打印)->Loop(循环)...
第1节 Scala基础语法:3、环境;4、插件
1. Scala编译器安装 1.1. 安装JDK 因为Scala是运行在JVM平台上的,所以安装Scala之前要安装JDK。 1.2. 安装Scala 1.2.1. Windows安装Scala编译器 访问Scala官网http://www.scala-lang.org/下载Scala编译器安装包,目前最新版本是2.12.x,这里下载scala-2.11.8...
scala入门3(基础语法之操作符运算)
scala入门3(基础语法之操作符运算)
scala基础语法3--流程控制
一、与java一样有如下 1顺序控制 2分支控制 3)循环控制 注:IDEA 快捷键 ctrl+b可以查看源码 二、if分支 在做数学计算的时候,scala 包中(默认引入的) 的 math 的包对象有很多方法直接可用 x1.formatted("%.2f") 是保留两位小数,实际项目中可能有需要用到 嵌套分支不要超过 3 层 scala 中没有 switch,而是使用模式匹配来处理。 三、for循环 for 推 导式(for comprehension)或 for 表达式(..
Scala系列3:轻松搞定Scala变量与数据类型,运算符等基础语法
0. Scala中的数据类型 因为Scala底层是Jvm,所以Scala和Java一样,有7种数值类型Byte、Char、Short、Int、Long、Float和Double(scala里无包装类型)和一个Boolean类型(都是大写的类型),其他Java支持的数据类型如String类型,Scala一般都支持。但是跟Java不同的是这些都是类,在Scala里并不刻意区分基本类型和引用类型。 1.Scala中变量的使用与演示 1.1 scala中变量的使用 1.在scala中, 可以...
472



被折叠的 条评论
为什么被折叠?



