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

    浏览量

    6330
  • Chisel
    +关注

    关注

    0

    文章

    7

    浏览量

    414
收藏 人收藏

    评论

    相关推荐

    #2024,立Flag了嘛? #学习spinal HDL还需要学习对应的Scala语言

    学习spinal HDL还需要学习对应的Scala语言,但是spinal HDL直接贴近硬件编程,不知道对于学习spinal HDL有什么好的建议?
    发表于 01-21 11:11

    #2024,立Flag了嘛? # 开年之疑问重重

    选择SpinalHDL、chisel还是verilog HDL作为开发语言,上周FPGA大佬跟几个在IC设计公司的同学吃饭后,聊了一下发现对应的行业标杆的公司导入了spinalHDL作为开发语言
    发表于 01-13 09:18

    oracle和mysql语法区别大吗

    Oracle和MySQL是两种不同的关系型数据库管理系统(RDBMS)。虽然它们都是遵循SQL标准,但在语法和特性上仍存在一些区别。以下是对Oracle和MySQL语法区别的详细说明: 数据类型
    的头像 发表于 12-06 10:26 360次阅读

    select语句的基本语法

    、详实、细致地解释SELECT语句的基本语法以及关键部分。 SELECT语句的基本语法如下: SELECT 列名 1 , 列名 2 , ... FROM 表名 WHERE 条件 上述语法可以分为三个
    的头像 发表于 11-17 16:23 653次阅读

    HarmonyOS语言基础库开发指南上线啦!

    针对并发能力、容器库能力、XML生成解析与转换这大方面,全面清晰地讲解了各自的实现机制并提供了对应的具体示例和指导,助力开发者实现应用开发。 开发者可在HarmonyOS文档官网,直接搜索想了
    发表于 10-18 16:36

    Java的基础语法

    上一次我们学习了怎么安装JDK和开发工具IDEA,同时也给大家写了一个hello world的演示代码。今天我们给大家从 hello world 展开讲讲Java的基础语法。 话不多说,直接
    的头像 发表于 10-10 16:21 219次阅读
    Java的基础<b class='flag-5'>语法</b>

    quartus基本语法集合

    quartus基本语法集合
    发表于 09-26 07:05

    Python的基本语法汇总

    Python是一门应用性较强的编程语言,近年来的市场也非常大。学习需要,先熟悉一下python的语法
    发表于 09-04 16:26 268次阅读
    Python的基本<b class='flag-5'>语法</b>汇总

    【开源方库】Aki:一行代码极简体验JS&amp;C++跨语言交互

    提供解决方案,提供了复杂度仅为O(1)级别的极简语法糖使用方式,一行代码完成JS与C/C++的无障碍跨语言互调, 所键即所得 。同时开发者无需关心NAPI的线程安全问题、Native对象GC问题,为
    发表于 08-07 17:04

    verilog可综合的语法子集

    可综合的语法是指硬件能够实现的一些语法,这些语法能够被EDA工具支持,能够通过编译最终生成用于烧录到FPGA器件中的配置数据流。
    的头像 发表于 07-23 12:25 800次阅读

    python创建文件对象

    2.1. 创建文件对象 **open() 函数用于创建文件对象,基本语法格式如下:** open(文件名[,打开方式]) 注意: 如果只是文件名,代表在当前目录下的文件. 文件名可以录入全路径,比如
    的头像 发表于 06-21 17:19 1063次阅读
    python创建文件<b class='flag-5'>对象</b>

    HarmonyOS/OpenHarmony应用开发-ArkTS语言基本语法说明

    ArkTS的基本组成 装饰器: 用于装饰、结构、方法以及变量,并赋予其特殊的含义。如上述示例中@Entry、@Component和@State都是装饰器,@Component表示自定义组件,@Entry
    发表于 06-01 10:25

    SpinalHDL语法之Bool类型

    作为SpinalHDL语法篇的第一节,我们也从最简单的开始。 Bool类型定义
    的头像 发表于 05-05 16:01 386次阅读

    学习GNU汇编语法

    学习Cortex-A7的GUN汇编语法
    的头像 发表于 04-30 08:42 52.1w次阅读

    RT-Thread所包含的对象以及对象的方法函数分析

    对象,主要有个:   1、RTT最基本的对象:rt_object   2、线程对象:rt_thread   3、定时器对象:rt_tim
    发表于 04-27 11:46