温故知新|学习笔记

简介: 快速学习温故知新。

开发者学堂课程【Scala 核心编程-基础:温故知新】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/609/detail/8945


温故知新


内容简介

一、函数式编程的基础

二、函数注意事项和细节讨论

三、Java 异常处理注意点

四、Scala 异常处理小结

 

上次讲的内容是从循环讲起,大概是把 Scala 循环的特点和 var 作比较,这是基础部分。之前讲了函数式编程内容及授课顺序说明

 

一、函数式编程的基础

1、函数式的式

(1)样式

(2)形式

(3)方式

其实函数式编程最重要的就是式,函数在其中也担任了基础部分;在之前写代码 res1. foreach (my show)时,可以观察到把函数当作了基础的变量,作为传递也很方便。

原先的处理方法,本身就是一个逆序过程,有提到,函数变量反着来的。一般情况下,在 Java 中是函数接收这个参数;在函数式编程里,有一特点,在集合调用函数时,又传了一个函数,传上去的函数可以对集合里的每一个元素进行处理,这样的设计很符合大数据的应用场景。

因为在大数据中,对数据的处理本质就是对集合的处理,而在对集合的处理时,一定要用到函数;反过来说,用一个集合去调函数,然后把集合交给了上传的函数处理,相当于上传的函数反过来了,在之前是把参数给函数处理的,现在的处理方式就是把集合中的每一个元素交给了上传的函数处理;处理完一个集合后,还支持再调函数,再调函数中还可以再上传函数,依次类推,可以形成一个函数链的编程方式。

之后再讲到时,会写到一个案例,就是统计一篇文章中有多少单词,并按照从小到大的顺序进行排序,一行代码便可以解决,Java 要想做到这样便很难,这种编程方式会很简洁,这是核心思想,里面还引出了很多东西,比如要如何传,怎么定义和如何性能优化等等。

2、在函数式编程高级中

值函数

高阶函数

闭包

应用函数

柯里化函数、抽象控制等等

 

二、函数注意事项和细节讨论

1函数的形参列表可以是多个,如果函数没有形参,调用时可以不带

2形参列表和返回值列表的数据类型可以是值类型和引用类型

3、Scala 中的函数可以根据函数体最后一行代码自行推断函数返回值类型,在此情况下,return 关键字可以省略;

4、因为 Scala 可以自行推断,所有省略 return 关键字的场合,返回值类型也可以省略;

5、如果函数明确使用 return 关键字,那么函数返回就不能使用自行推断了,这时要明确写成回类型=,当然如什么都不写,即使有 return 返回值为0

 

三、Java 异常处理注意点

1java 语言按照 try—catch-catch...—finally 的方式来处理异常

2不管有没有异常捕获,都会执行 finally,因此通常可以在 finally 代码块中释放资源;

3可以有多个 catch,分别捕获对应的异常,这时需要把范围小的异常类写在前面,把范围大的异常类写在后面,否则编译错误。会提示“Exception 'java. lang. xx' has already been caught"

 

四、Scala 异常处理小结

1我们将可疑代码封装在 try 块中。在 try 块之后使用了一个 catch 处理程序来捕获异常。如果发生任何异常,catch处理程序将处理它,程序将不会异常终止

2Scala 的异常的工作机制和 Java 一样,但是 Scala 没有“checked(编译期)”异常,即 Scala 没有编译异常这个概念,异常都是在运行的时候捕获处理

3用 throw 关键字,抛出一个异常对象。所有异常都是 Throwable 的子类型。throw 表达式是有类型的,就是Nothing,因为 Nothing 是所有类型的子类型,所以 throw 表达式可以用在需要类型的地方

以上的方法和总结需要去实践过程中加固,可以尝试去写代码来巩固知识点。

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