控制抽象的最佳实践 | 学习笔记

简介: 快速学习控制抽象的最佳实践

开发者学堂课程【Scala 核心编程 - 进阶控制抽象的最佳实践学习笔记,与课程紧密连接,让用户快速学习知识。

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


控制抽象的最佳实践


一、进阶用法:实现类似 while 的 until 函数

控制抽象结合函数柯里化会实现 while 循环的效果

While 循环中

object contrilAbstractApp {

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

var x = 10

while (x > o){

x -= 1

printLn( "x=” + x)

}

}

}

输出为x=9到x=0,一共10次

//使用控制抽象,学出 until 函数,实现类似的效果

演示:

var x = 10

def until(condition: => Boolean)(block: => Unit): Unit = {

(接受两个函数,一个没有传入值,有返回 boolean 的,另一个没有传入值,也没出返回值 )

//类似while循环,递归

if (condition){

Block

//递归调用 until

until(condition)(block)}

//println(""x=” + x)

//println(condition)

//block

//println("x=”+ x)

}

演示:

X=10

until(x>O){

x -=1

printIn("x=" + x)}

}

}

与 while 非常相似,但是使用了控制抽象

运行结果与 while 循环相同 x=9到 x=0

【案例演示+代码说明】

var x =10

while (x > o){

x -= 1

println( "x"=+x)

}

}

}

输入结果为x=9 x=8 x=7 x=6 x=5 x=4 x=3 x=2 x=1 x=0

//我们可以使用控制抽象写出until函数,实现类似的效果

x=10

Until(x>0){

x-=1

println("until x=" + x)

}

}

输入结果为until=9 until=8 until=7 until=6 until=5 until=4 until=3 until=2 until=1 until=0

def until(condition: =>Boolean)(block: => unit): unit = {

//类似whiLe循环,递归

if ( condition) {

block

//递归调用until

until(condition)(block)

}


二、总结

使用控制抽象实现 while 的函数 until

x =10

until(x > o){x -= 1

println( "until x=” + ×)}

def until(condition: => Boolean)(block: => unit): unit = {//类似while循环,递归

if (condition) {

block

//递归调用until

until(condition)(block)}

}

反复调用,condition: 传给 Boolean ,block代码块传入,反复传入, 由于x 为外部变量,最终会变为 false ,推出递归。

相关文章
|
6月前
|
设计模式
建模底层逻辑问题之以命令设计模式为例,要用定义法建模,如何实现
建模底层逻辑问题之以命令设计模式为例,要用定义法建模,如何实现
|
8月前
|
SQL 存储 缓存
第四章 逻辑架构(2)
第四章 逻辑架构
48 1
|
8月前
|
SQL 存储 缓存
第四章 逻辑架构(1)
第四章 逻辑架构
54 1
|
9月前
|
敏捷开发 编解码 测试技术
【测试】1. 概念 + 基础篇
【测试】1. 概念 + 基础篇
97 1
|
9月前
|
设计模式 API 数据库
【C/C++ 设计思路】C++中解耦策略的艺术:有效管理复杂依赖关系
【C/C++ 设计思路】C++中解耦策略的艺术:有效管理复杂依赖关系
447 3
|
编译器 C语言 C++
【C++】---基础特性
【C++】---基础特性
94 0
|
存储 Kubernetes 负载均衡
K8S基础篇:概念与架构
**Kubernetes** 是一个可移植的、可扩展的开源平台,用于**管理容器化的工作负载和服务,可促进声明式配置和自动化**。 Kubernetes 拥有一个庞大且快速增长的生态系统。Kubernetes 的服务、支持和工具广泛可用
353 2
K8S基础篇:概念与架构
|
存储 架构师 算法
架构设计的本质:系统与子系统、模块与组件、框架与架构
在软件研发这个领域,程序员的终极目标都是想成为一名合格的架构师。然而梦想很美好,但现实却很曲折。
架构设计的本质:系统与子系统、模块与组件、框架与架构
|
缓存 前端开发
案例21-面向对象复用、面向对象实现、立体化权限
案例21-面向对象复用、面向对象实现、立体化权限
|
测试技术
【系统架构】面向对象设计——控制类
【系统架构】面向对象设计——控制类
225 0