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

    浏览量

    6468
  • Chisel
    +关注

    关注

    0

    文章

    7

    浏览量

    473
收藏 人收藏

    相关推荐

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

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

    硬件设计技巧:三类GPIO接口的实用指南

    今天教大家一些关于硬件设计的的技巧,只要掌握好三类GPIO,轻松玩好硬件设计。
    的头像 发表于 11-05 12:22 449次阅读
    硬件设计技巧:<b class='flag-5'>三类</b>GPIO接口的实用指南

    不可错过的三类GPIO硬件设计指南!

    今天我们学习三类GPIO硬件设计,这三类绝对是不可错过的,本文将把三类设计的重要性展示出来:
    的头像 发表于 11-04 09:45 1119次阅读
    不可错过的<b class='flag-5'>三类</b>GPIO硬件设计指南!

    Lua语法基础教程(中篇)

    今天我们继续学习Lua语法基础教程,中篇。 五、变量 5.1 number变量 变量,可以看作是一个桶,在里面装你想要装的内容。这些内容可以是Lua包含的所有合法类型。 例如:我想要新建一个桶,名叫
    的头像 发表于 10-26 11:39 340次阅读
    Lua<b class='flag-5'>语法</b>基础教程(中篇)

    Verilog语法中运算符的用法

    verilog语法中使用以下两个运算符可以简化我们的位选择代码。
    的头像 发表于 10-25 15:17 1438次阅读
    Verilog<b class='flag-5'>语法</b>中运算符的用法

    《DNK210使用指南 -CanMV版 V1.0》第十八章 machine.Timer实验

    将在后续的章节中进行讲解。machine.Timer提供了Timer构造函数,用于创建一个Timer对象,Timer构造函数如下所示:class Timer(id, channel, mode
    发表于 10-16 09:21

    《DNK210使用指南 -CanMV版 V1.0》第十七章 machine.WDT实验

    将在下一次超时时产生一次看门狗复位,使得系统重新启动。machine.WDT提供了WDT构造函数,用于创建一个WDT对象,WDT构造函数如下所示:class WDT(id=0, timeout
    发表于 10-15 14:32

    java子类可以继承父的什么

    Java是一种面向对象的编程语言,它支持继承的概念。继承是面向对象编程的大特性之一,它允许一个(称为子类或派生)继承另一个
    的头像 发表于 08-20 11:02 1505次阅读

    HarmonyOS Next原生应用开发-从TS到ArkTS的适配规则(十五)

    } 、不支持with语句 规则:arkts-no-with 级别:错误 ArkTS不支持with语句,使用其他语法来表示相同的语义。TypeScript with (Math) { // 编译
    发表于 08-19 16:13

    HarmonyOS Next原生应用开发-从TS到ArkTS的适配规则(十一)

    一、不支持修改对象的方法 规则:arkts-no-method-reassignment 级别:错误 ArkTS不支持修改对象的方法。在静态语言中,对象的布局是确定的。一个的所有
    发表于 08-02 14:07

    HarmonyOS Next 原生应用开发-ArkTS语法适配背景说明

    助于更好地优化性能。、.ets代码兼容性 在API version 10之前,ArkTS(.ets文件)完全采用了标准TS的语法。从API version 10 Release起,ArkTS的语法
    发表于 07-01 16:49

    FPGA学习笔记---基本语法

    Verilog语法是指硬件能够实现的语法。它的子集很小。常用的RTL语法结构如下: 1、模块声明:module ... end module 2、端口声明:input, output, inout
    发表于 06-23 14:58

    鸿蒙TypeScript学习第17天:【对象

    对象是包含一组键值对的实例。 值可以是标量、函数、数组、对象
    的头像 发表于 04-15 15:33 725次阅读
    鸿蒙TypeScript学习第17天:【<b class='flag-5'>对象</b>】

    鸿蒙语言TypeScript学习第16天:【

    TypeScript 支持面向对象的所有特性,比如 、接口等。
    的头像 发表于 04-15 09:29 1132次阅读
    鸿蒙语言TypeScript学习第16天:【<b class='flag-5'>类</b>】

    鸿蒙原生应用开发-ArkTS语言基础库异步并发简述Promise

    读写等操作。异步语法是一种编程语言的特性,允许程序在执行某些操作时不必等待其完成,而是可以继续执行其他操作。 Promise是一种用于处理异步操作的对象,可以将异步操作转换为类似于同步操作的风格,以方
    发表于 03-07 15:46