作业评讲|学习笔记

简介: 快速学习作业评讲。

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

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


作业评讲

 

特质trait

1、java.awt.Rectangle 类有两个很有用的方法 translate 和 grow,但可惜的是像 java.awt.geom.Ellipse2D 椭圆这样的类没有。在 Scala 中,你可以解决掉这个问题。定义一个 RenctangleLike 特质,加入具体的 translate 和 grow 方法。提供任何你需要用来实现的抽象方法,以便你可以像如下代码这样混入该特质:

val egg = new java.awt.geom.Ellipse2D.Double(5,10,20,30) with RectangleLike 可以使用这种方式去构建 Double的实例要混入 RectangleLike 特质而这个特质要拥有两个方法translate 和 grow

egg.translate(10,-10)

egg.grow(10,20)

2、分析思路

(1)考察点是使用特质(自身类型或简单的继承方式)编写方法,以动态混入的方式,来扩展一个类的功能

(2)RenctangleLike 名字translate将 x,y 的值重置和 grow 方法对 x,y 值进行增长的处理

(3)new java.awt.geom.Ellipse2D.Double(5,10,20,30)with RectangleLike

(4)使用 egg.translate(10,-10) egg.grow(10,20)

代码实现

3、创建一个包命名为 homework

创建 Exercise01选择 object

写一个主方法

package com. atguigu. chapter09. homework

/*java.awt.Rectangle 类有两个很有用的方法 translate 和 grow,但可惜的是像 java.awt.geom.Ellipse2D 这样的类没有。在 Scala 中,你可以解决掉这个问题。定义一个 RenctangleLike 特质,加入具体的 translate 和 grow 方法。提供任何你需要用来实现的抽象方法,以便你可以像如下代码这样混入该特质:

val egg = new java.awt.geom.Ellipse2D.Double(5,10,20,30) with RectangleLike 

egg.translate(10,-10)

egg.grow(10,20)

*/

object Exercise01 {

def main(args: Array[String]): Unit = {

val egg = new java.awt.geom.Ellipse2D.Double(5,10,20,30) with RectangleLike   egg 里面拥有translate 和 grow 两个方法

println("egg.x"+egg·x+"egg-y"=+egg.y)打印出没有变化之前鸡蛋的 x 和 y它的情况

}

}

Trait RectangleLike extends Ellipse2D. Double{   这里需要引入一个包

Def translate(x: Double,y :Double): Unit={ 按整数或者 double 都可以

This.x=x  This是从 Ellipse2D. Double 中继承过来的

This.y=y

}

Def growx: Double,y :Double: Unit={

This.x+=x  增长

This.y+=y  给多大的值增长多大的值

}

运行看横纵坐标是不是510,2030是它的宽度

运行结果如下

egg.x5.0 egg·y=10.0

输入 egg. translate(10, -10)]

println("egg.x" =+ egg.x +" egg·y= " + egg·y)

运行查看是否有变化

运行结果如下

egg.x=5.0 egg·y=10.0

egg.x=10.0 egg·y=-10.0

再输入 egg. grow(10,20) //增长 x,y

println("egg.x=" + egg.x +egg.y=" + egg·y)

运行查看 x 和 y 有没有发生变化

运行结果如下

egg.x=5.0 egg·y=10.0

egg.x=10.0 egg.y=-10.0

egg.x=20.0 egg.y=10.0

考察点主要是考察使用继承的方式扩展一个 trait再让一个类用混入特质的方式扩展功能除了这种写法以下是传统的写法

//传统写法

trait RectangleLike extends Ellipse2D. Double {

def translate(x: Double,y:Double): Unit = {

this.x = x

this.y = y

}

def grow(x :Double,y:Double): Unit = {

this.x += x

this.y += y

}

}

或者用自身类型扩展也可以

trait RectangleLike2 extends {

this: Ellipse2D. Double=>

def translate(x: Duble,y:Double): Unit = {

this.x = x

this.y = y

}

def grow(x :Double,y:Double): Unit = {

this.x += x

this.y += y

}

}

把 RectangleLike 改成 RectangleLike2一样可以运行

运行结果如下

egg.x=5.0 egg·y=10.0

egg.x=10.0 egg.y=-10.0

egg.x=20.0 egg.y=10.0

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