控制抽象介绍和快速入门 | 学习笔记

简介: 快速学习控制抽象介绍和快速入门

开发者学堂课程【Scala 核心编程 - 进阶控制抽象介绍和快速入门学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/610/detail/9095


控制抽象介绍和快速入门


内容介绍:

一、看一个需求

二、控制抽象基本介绍

三、总结


一、看一个需求

如何实现将一段代码(从形式上看),作为参数传递给高阶函数,在高阶函数内部执行这段代码.其使用的形式如  breakable{}。

有一段代码直接传给函数,如 breakable

var n= 10

breakable {

while (n <= 20){n += 1

if (n == 18){

break()

}

}

}

Breakable 直接传入代码,代码在 breakable 当作一个函数执行, breakable 接受的类型为没有输入也没有输出的函数,如何函数是没有输入也没有输出的,可以直接传入代码块


二、控制抽象基本介绍

控制抽象是这样的函数,满足如下条件

1.参数是函数

出现构置到函数中可以接受一个函数

2.函数参数没有输入值也没有返回值

案例:

object Abstractcontrol {

def main(args : Array[string]): unit = {

//myRunInThread 就是一个抽象控制

//是没有输入,也没有输出的函数 f1:() => Unit

def myRunInThread(f1:() => Unit) = {

new Thread {

(匿名的一个类)

override def run(): Unit ={

f1()//只写了f1

}

(重写一个run方法)

}.start()

start()

相当于将

()=>

println("干活咯!5秒完成...")

Thread.sleep(5000)

println("干完咯!")

放入执行,显得较为复杂)

}

myRunInThread {

()=>

println("干活咯!5秒完成...")

Thread.sleep(5000)

println("干完咯!")

f1()的代码相当于把

println("干活咯!5秒完成...")

Thread.sleep(5000)

println("干完咯!")

复制()里面)

}

def myRunInThread2(f1:=> unit) = {

new Thread {

override def run(): unit = {

f1//只写了f1

}

}.start()

}

可以简化写:

//对于没有输入,也没有返回值的函数,可以简写成如下形式:

myRunInThread2 {

println("干活咯!5秒完成...")

Thread.sleep(5000)

println("干完咯!")

(存在错误,因为f1:()错误)

新建一个

def myRunInThread2(f1:=> unit) = {new Thread {

override def run() : unit = {f1//只写了f1

}

}.start()}

对于直接输入没有返回,相当于传了一个代码块,本质是一个匿名函数

println(”干活咯!5秒完成...~~~")

Thread.sleep( 5000)

printLn(”干完咯!~~~")

}

}

}

输出为干活咯!5秒完成...~~~


三、总结

1.抽象控制的基本使用,提出一个要求,能否写出一个类似的传递代码快的效果,如 breakable

2.举例实现效果,抽象控制的案例,参数是函数,函数没有输入值也没有返回值以及介绍控制抽象的应用案例,原形式与简化形式

相关文章
|
数据库
数据库五种基本运算
【5月更文挑战第15天】数据库的关系代数包括并、差、投影、笛卡尔积和选择等基本运算,以及交、连接、除、广义投影和外连接等扩展运算。在这些操作中,笛卡尔积通常最消耗资源,因为它会大幅增加元组数量和计算量。
1596 4
数据库五种基本运算
|
存储 自然语言处理 安全
『软件工程9』结构化系统分析——解决软件“做什么”问题
该文章深入讲解了结构化系统分析方法,用于明确软件需求和解决软件“做什么”的问题,并介绍了在此过程中使用的工具和技术。
『软件工程9』结构化系统分析——解决软件“做什么”问题
|
存储 人机交互 数据库
如何数据库设计?
本文介绍了数据库设计的四种方法和基本步骤。直观设计法依赖设计者经验,规范设计法(如新奥尔良法)遵循软件工程原理,分为需求分析、概念设计、逻辑设计和物理设计四个阶段。计算机辅助设计法借助软件工具,自动化设计法则通过人机会话自动生成数据库。设计步骤包括需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施和运行维护。需求分析是关键,概念结构设计是基础,逻辑和物理设计涉及数据模型转换和存储优化,而运行维护是持续改进的过程。
754 0
如何数据库设计?
|
安全 Linux 网络安全
【工具使用】几款优秀的SSH连接客户端软件工具推荐FinalShell、Xshell、MobaXterm、OpenSSH、PUTTY、Terminus、mRemoteNG、Terminals等
【工具使用】几款优秀的SSH连接客户端软件工具推荐FinalShell、Xshell、MobaXterm、OpenSSH、PUTTY、Terminus、mRemoteNG、Terminals等
130457 0
|
存储 算法 数据挖掘
软件体系结构 - 架构风格(11)黑板架构架构风格
【4月更文挑战第21天】软件体系结构 - 架构风格(11)黑板架构架构风格
1869 0
|
存储 缓存 关系型数据库
《PolarDB for PostgreSQL源码与应用实战》——PolarDB-PostgreSQL开源核心Feature介绍(1)
《PolarDB for PostgreSQL源码与应用实战》——PolarDB-PostgreSQL开源核心Feature介绍(1)
539 0
|
存储 SQL 算法
MySQL索引从基础到原理,看这一篇就够了
MySQL索引从基础到原理,看这一篇就够了
17244 5
MySQL索引从基础到原理,看这一篇就够了
|
3天前
|
数据采集 人工智能 安全
|
12天前
|
云安全 监控 安全