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

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

开发者学堂课程【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 ,推出递归。

相关文章
|
3天前
|
数据采集 人工智能 安全
|
12天前
|
云安全 监控 安全
|
4天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1071 151
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1745 9
|
9天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
688 152
|
11天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
656 12
|
6天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
420 4