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

    浏览量

    6983
  • Chisel
    +关注

    关注

    0

    文章

    7

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Nginx反向代理场景下的三类错误排查方法

    在生产环境中,502、504 和 Connection Reset 是 Nginx 反向代理场景下最常见的三类错误。它们经常被笼统地归为"后端挂了",但实际上种错误指向完全不同的故障类型。
    的头像 发表于 05-12 09:32 349次阅读

    基于凌羽派的OpenHarmony北向应用开发:ArkTS语法-数据类型和变量声明

    一、简介 ArkTS是一种设计用于构建高性能应用的编程语言。它在继承TypeScript语法的基础上进行了优化,以提供更高的性能和开发效率。 环境配置如下所示: API:18 SDK
    发表于 02-26 14:24

    如何分辨五网线

    分辨五与六网线的方法如下: 外皮标识 五网线外皮标注“CAT5”,六网线标注“CAT6”。这是最直观的区分方式,标识直接表明网线的类别。 传输性能 五
    的头像 发表于 01-28 10:21 2479次阅读

    芯原入选国家知识产权示范企业创建对象

    1月12日,国家知识产权局公示了“2025-2027年国家知识产权强国建设示范创建对象”的评审结果,芯原微电子 (上海) 股份有限公司凭借其在知识产权创造、运用、管理和保护方面的扎实基础与突出成效,成功入选“国家知识产权示范企业创建对象”,这标志着公司知识产权工作获得了国
    的头像 发表于 01-27 15:28 408次阅读

    C与C++之间的联系

    1、语法兼容性: C++完全兼容C语言的语法,这意味着任何有效的C语言程序都可以直接在C++编译器下编译通过。 2、底层控制: C++虽然增加了许多高级特性,但它仍然保持了对硬件资源的低级
    发表于 12-11 06:51

    C语言和C++之间的区别是什么

    区别 1、面向对象编程 (OOP): C语言是一种面向过程的语言,它强调的是通过函数将任务分解为一系列步骤进行执行。 C++在C语言的基础上扩展了面向对象的特性,支持(class)、封装、继承
    发表于 12-11 06:23

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

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

    语法纠错和testbench的自动生成

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

    跳线VS超五/超六——如何选择“网络血管”?

    在布线工程中,选对跳线类型直接影响网络性能与成本。六跳线虽非“全能选手”,但在特定场景下性价比突出。 一、六跳线VS超五:千兆网络的“分水岭” 案例:某小区升级千兆光纤到户,若使用超五
    的头像 发表于 10-21 10:24 1621次阅读
    六<b class='flag-5'>类</b>跳线VS超五<b class='flag-5'>类</b>/超六<b class='flag-5'>类</b>——如何选择“网络血管”?

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

    样例程序: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 1.9w次阅读

    网线面板分五

    网线面板确实分五和六,这种分类主要基于其适配的网线类型及传输性能,以下是具体说明: 一、分类依据 适配网线类型 五面板:专为五网线(CAT5)设计,适用于百兆以太网(100Mb
    的头像 发表于 08-08 09:46 5328次阅读

    网线能用六水晶头吗

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

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

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