0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Chisel(三) Scala语法 类与对象

学FPGA,慢慢来 2019-08-19 23:29 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在Scala中,类是使用关键字“class”开头的代码定义的,定义完成类之后,就可以“new类名”的方式来构造一个对象,而这个对象的类型就是类。在类之中,可以定义val或var类型的变量,也可以定义“def”函数,这些都统称方法。字段和方法统称“成员”。字段通常运用于保存对象的状态与数据,而方法则用于承担对象的计算任务。

在外部想要访问成员时,可以使用“对象.成员”的形式来访问,“val”类型的变量只能与初始化时的对象绑定。Scala的类成员默认都是共有的,都可以使用“对象.成员”的方式来访问。

在Scala中不需要显式定义构造方法,而是把类内部非字段、非方法的代码都当做“主构造方法”,而且,类名后面可以定义若干个参数列表,用于接收参数,这些参数将在构造对象时用于初始化字段并传递给主构造方法使用。除了主构造方法,还可以定义若干个辅助构造方法。辅助构造方法都是以“defthis(...)”来开头的,而且第一步行为必须是调用该类的另一个构造方法,即第一句语句必须是“this(...)”——要么是主构造方法,要么是之前的另一个辅助构造方法。

scala> class Students(n: String) {

| val name = n

| def this() = this("None")

| println("A student named " + n + " has been registered.")

| }

defined class Students

scala> val stu = new Students

A student named None has been registered.

stu: Students = Students@74309cd5

在这个例子中,定义了一个辅助构造方法,该方法是无参的,其行为也仅是给主构造方法传递一个字符串“None”。在后面创建对象时,缺省了参数,这样与主构造方法的参数列表是不匹配的,但是与辅助构造方法匹配,所以stu指向的对象是用辅助构造方法构造的。

Java里,辅助构造方法可以调用超类的构造方法,而Scala加强了限制,只允许主构造方法调用超类的构造方法(详情见后续章节)。这种限制源于Scala为了代码简洁性与简单性做出的折衷处理。

————————————————

版权声明:本文为CSDN博主「_iChthyosaur」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_34291505/article/details/86760620

如果在类名与类的参数列表之间加上关键字“private”,那么主构造方法就是私有的,只能被内部定义访问,外部代码构造对象时就不能通过主构造方法进行。

主函数是Scala程序的唯一入口,即程序是由主函数开始运行的,要提供这样的入口,则必须在某个单例对象里定义一个名为“main”的函数,而且这个函数只有一个参数,类型是字符串数组Array[String],函数的返回类型是Unit。任何符合条件的单例对象都能成为程序的入口。



声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • scala
    +关注

    关注

    0

    文章

    42

    浏览量

    6823
  • Chisel
    +关注

    关注

    0

    文章

    7

    浏览量

    573
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    图解码说-六大UML图关系(依赖,继承,实现,关联,聚合,组合)

    UML 图是面向对象设计的 “施工图”,而依赖、继承、实现、关联、聚合、组合这六大关系,就是图中定义互动规则的核心 “语法”。掌握它
    的头像 发表于 11-05 09:03 322次阅读
    图解码说-六大UML<b class='flag-5'>类</b>图关系(依赖,继承,实现,关联,聚合,组合)

    语法纠错和testbench的自动生成

    在编写Verilog代码时,我一般都是先在编辑器上写完,因为编辑器vscode或者notepad++可以提供语法高亮和自动补全等功能,然后用仿真器跑仿真,但是在编写过程中不可避免的会有一些语法的错误
    发表于 10-27 07:07

    程序编译运行正常但是显示语法错误,为什么?

    样例程序:can_sample.c rtconfig.h里启用了#define RT_CAN_USING_HDR 代码从图中这里开始大段标识语法错误: 跳转到宏
    发表于 09-25 06:27

    canopen如何通过对象字典控制外设?

    各位大佬好,我在移植canopen的时候碰到一个疑问。比如我修改对象字典2000,子索引为0这个目录下的值,如何这个对象映射的是某个led灯的亮灭,输入1为亮,0为灭。 问题就是我发送报文之后会进入
    发表于 09-11 06:04

    网线接口能插六网线吗

    网线接口(RJ45)可以插六网线,但实际使用效果需结合具体场景和设备综合判断。以下是详细分析: 一、物理兼容性:接口通用,但需注意细节 RJ45接口标准统一 五(Cat5)、超五
    的头像 发表于 09-08 10:32 3267次阅读

    网线能用六水晶头吗

    网线可以使用六水晶头,但需注意兼容性和实际效果,且通常不建议长期或关键场景下这样搭配。 以下是详细分析: 一、五网线与六水晶头的兼容性 物理结构兼容性 线径与排列:五
    的头像 发表于 08-06 10:29 5624次阅读
    五<b class='flag-5'>类</b>网线能用六<b class='flag-5'>类</b>水晶头吗

    鸿蒙开发如何显示Markdown格式语法 -- markdown_hm介绍

    在开发过程中,对于内容的展示通常有富文本和Markdown两种,后者更偏向于技术文档、说明书一的内容展示。但是和富文本不同的是,没有一个原生组件可以用来解析展示Markdown语法的内容,所以
    发表于 06-30 18:47

    买水晶头如何匹配超5 67

    购买与超5、6、7网线匹配的水晶头时,需遵循以下原则,以确保传输性能、稳定性和兼容性: 一、匹配原则 超5网线 推荐搭配:超5水晶
    的头像 发表于 03-26 10:05 4941次阅读

    如何使用OpenVINO™运行对象检测模型?

    无法确定如何使用OpenVINO™运行对象检测模型
    发表于 03-06 07:20

    对象存储是什么结构类型?

    对象存储属于非结构化数据存储架构,采用扁平化命名空间结构。其核心通过唯一标识符(ObjectID)定位数据对象,突破传统文件系统的层级目录限制,形成"桶-对象"两级逻辑模型。数据以独立对象
    的头像 发表于 02-10 11:14 691次阅读

    网线6和7的区别是什么

    网线6和7的区别主要体现在以下几个方面: 一、传输性能 传输速率: 六网线(CAT6)支持高达1Gbps的传输速率,适用于千兆以太网。 七网线(CAT7)则支持高达10Gbps
    的头像 发表于 02-10 10:20 8678次阅读

    网线怎么分辨56

    要分辨网线是5还是6,可以从以下几个方面进行观察和分析: 一、外观标识 外皮印刷:正规的网线外皮上通常会有明确的标识。5网线的标识一般为“CAT5”或“Cat 5e”(超5),
    的头像 发表于 02-08 10:28 7305次阅读

    HarmonyOS Next 应用元服务开发-分布式数据对象迁移数据权限与基础数据

    ,临时变量被释放可能导致空指针异常。可以使用成员变量避免该问题。对端用于创建分布式数据对象的Object,其属性应在激活分布式数据对象前置为undefined,否则会导致新数据加入组网后覆盖源端数据
    发表于 12-24 09:40

    专业的第三类医疗器械经营企业计算机系统,确保合规无忧

    三类医疗器械经营企业计算机系统因其简单明了的特性而受到了众多用户的欢迎。与其他第三类医疗器械经营企业计算机系统相比,盘谷医疗的快速上手为用户提供了极大的便利。该系统还支持远程操作,用户可以随时随地对医疗器械进行进销存管理。
    的头像 发表于 12-12 16:05 695次阅读
    专业的第<b class='flag-5'>三类</b>医疗器械经营企业计算机系统,确保合规无忧

    三类防雷建筑防雷工程及浪涌保护器需求方案

    根据国家标准《建筑物防雷设计规范》GB 50057,建筑物防雷等级划分为三类,不同防雷等级对浪涌保护器(SPD)的需求如下: 一防雷建筑 一防雷建筑指易燃易爆场所、重要通信设施及特定危险建筑物
    的头像 发表于 12-12 11:49 1306次阅读
    <b class='flag-5'>三类</b>防雷建筑防雷工程及浪涌保护器需求方案