0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

Chisel(三) Scala語法 類與對象

學FPGA,慢慢來 ? 2019-08-19 23:29 ? 次閱讀

在Scala中,類是使用關鍵字“class”開頭的代碼定義的,定義完成類之后,就可以“new類名”的方式來構造一個對象,而這個對象的類型就是類。在類之中,可以定義val或var類型的變量,也可以定義“def”函數(shù),這些都統(tǒng)稱方法。字段和方法統(tǒng)稱“成員”。字段通常運用于保存對象的狀態(tài)與數(shù)據(jù),而方法則用于承擔對象的計算任務。

在外部想要訪問成員時,可以使用“對象.成員”的形式來訪問,“val”類型的變量只能與初始化時的對象綁定。Scala的類成員默認都是共有的,都可以使用“對象.成員”的方式來訪問。

在Scala中不需要顯式定義構造方法,而是把類內(nèi)部非字段、非方法的代碼都當做“主構造方法”,而且,類名后面可以定義若干個參數(shù)列表,用于接收參數(shù),這些參數(shù)將在構造對象時用于初始化字段并傳遞給主構造方法使用。除了主構造方法,還可以定義若干個輔助構造方法。輔助構造方法都是以“defthis(...)”來開頭的,而且第一步行為必須是調(diào)用該類的另一個構造方法,即第一句語句必須是“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”。在后面創(chuàng)建對象時,缺省了參數(shù),這樣與主構造方法的參數(shù)列表是不匹配的,但是與輔助構造方法匹配,所以stu指向的對象是用輔助構造方法構造的。

Java里,輔助構造方法可以調(diào)用超類的構造方法,而Scala加強了限制,只允許主構造方法調(diào)用超類的構造方法(詳情見后續(xù)章節(jié))。這種限制源于Scala為了代碼簡潔性與簡單性做出的折衷處理。

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

版權聲明:本文為CSDN博主「_iChthyosaur」的原創(chuàng)文章,遵循CC 4.0 by-sa版權協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。

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

如果在類名與類的參數(shù)列表之間加上關鍵字“private”,那么主構造方法就是私有的,只能被內(nèi)部定義訪問,外部代碼構造對象時就不能通過主構造方法進行。

主函數(shù)是Scala程序的唯一入口,即程序是由主函數(shù)開始運行的,要提供這樣的入口,則必須在某個單例對象里定義一個名為“main”的函數(shù),而且這個函數(shù)只有一個參數(shù),類型是字符串數(shù)組Array[String],函數(shù)的返回類型是Unit。任何符合條件的單例對象都能成為程序的入口。



聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • scala
    +關注

    關注

    0

    文章

    42

    瀏覽量

    6628
  • Chisel
    +關注

    關注

    0

    文章

    7

    瀏覽量

    497
收藏 0人收藏

    評論

    相關推薦
    熱點推薦

    對象存儲是什么結構類型?

    對象存儲屬于非結構化數(shù)據(jù)存儲架構,采用扁平化命名空間結構。其核心通過唯一標識符(ObjectID)定位數(shù)據(jù)對象,突破傳統(tǒng)文件系統(tǒng)的層級目錄限制,形成"桶-對象"兩級邏輯模型。數(shù)據(jù)以獨立對象
    的頭像 發(fā)表于 02-10 11:14 ?266次閱讀

    硬件設計技巧:三類GPIO接口的實用指南

    今天教大家一些關于硬件設計的的技巧,只要掌握好三類GPIO,輕松玩好硬件設計。
    的頭像 發(fā)表于 11-05 12:22 ?904次閱讀
    硬件設計技巧:<b class='flag-5'>三類</b>GPIO接口的實用指南

    不可錯過的三類GPIO硬件設計指南!

    今天我們學習三類GPIO硬件設計,這三類絕對是不可錯過的,本文將把三類設計的重要性展示出來:
    的頭像 發(fā)表于 11-04 09:45 ?1431次閱讀
    不可錯過的<b class='flag-5'>三類</b>GPIO硬件設計指南!

    Lua語法基礎教程(中篇)

    今天我們繼續(xù)學習Lua語法基礎教程,中篇。 五、變量 5.1 number變量 變量,可以看作是一個桶,在里面裝你想要裝的內(nèi)容。這些內(nèi)容可以是Lua包含的所有合法類型。 例如:我想要新建一個桶,名叫
    的頭像 發(fā)表于 10-26 11:39 ?658次閱讀
    Lua<b class='flag-5'>語法</b>基礎教程(中篇)

    Verilog語法中運算符的用法

    verilog語法中使用以下兩個運算符可以簡化我們的位選擇代碼。
    的頭像 發(fā)表于 10-25 15:17 ?2317次閱讀
    Verilog<b class='flag-5'>語法</b>中運算符的用法

    Lua語法基礎教程(上篇)

    今天我們來學習Lua語法基礎教程。由于篇幅過長,將分為上中下篇進行講解,本篇為上篇。 一、初識Lua Lua 是一種輕量小巧的腳本語言,它用標準C語言編寫并以源代碼形式開放。這意味著什么呢?這
    的頭像 發(fā)表于 10-24 07:17 ?717次閱讀

    《DNK210使用指南 -CanMV版 V1.0》第十九章 machine.PWM實驗

    ,Timer對象便不能再做為普通的定時器使用。因為Kendryte K210擁有3個硬件定時器,且每個硬件定時器有4個通道,因此使用machine.PWM最大可以同時產(chǎn)生12路PWM。machine.PWM
    發(fā)表于 10-16 09:23

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

    將在后續(xù)的章節(jié)中進行講解。machine.Timer提供了Timer構造函數(shù),用于創(chuàng)建一個Timer對象,Timer構造函數(shù)如下所示:class Timer(id, channel, mode
    發(fā)表于 10-16 09:21

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

    將在下一次超時時產(chǎn)生一次看門狗復位,使得系統(tǒng)重新啟動。machine.WDT提供了WDT構造函數(shù),用于創(chuàng)建一個WDT對象,WDT構造函數(shù)如下所示:class WDT(id=0, timeout
    發(fā)表于 10-15 14:32

    基于ArkTS語言的OpenHarmony APP應用開發(fā):HelloOpenharmony

    : paramType[]) { } 3.5、 3.5.1、定義 TypeScript 是面向對象的 JavaScript,定義一個使用關鍵字 class ,
    發(fā)表于 09-14 12:47

    java子類可以繼承父的什么

    Java是一種面向對象的編程語言,它支持繼承的概念。繼承是面向對象編程的大特性之一,它允許一個(稱為子類或派生)繼承另一個
    的頭像 發(fā)表于 08-20 11:02 ?2073次閱讀

    HarmonyOS Next原生應用開發(fā)-從TS到ArkTS的適配規(guī)則(十五)

    } 、不支持with語句 規(guī)則:arkts-no-with 級別:錯誤 ArkTS不支持with語句,使用其他語法來表示相同的語義。TypeScript with (Math) { // 編譯
    發(fā)表于 08-19 16:13

    HarmonyOS Next原生應用開發(fā)-從TS到ArkTS的適配規(guī)則(十一)

    一、不支持修改對象的方法 規(guī)則:arkts-no-method-reassignment 級別:錯誤 ArkTS不支持修改對象的方法。在靜態(tài)語言中,對象的布局是確定的。一個的所有
    發(fā)表于 08-02 14:07

    HarmonyOS Next 原生應用開發(fā)-ArkTS語法適配背景說明

    助于更好地優(yōu)化性能。、.ets代碼兼容性 在API version 10之前,ArkTS(.ets文件)完全采用了標準TS的語法。從API version 10 Release起,ArkTS的語法
    發(fā)表于 07-01 16:49

    FPGA學習筆記---基本語法

    Verilog語法是指硬件能夠?qū)崿F(xiàn)的語法。它的子集很小。常用的RTL語法結構如下: 1、模塊聲明:module ... end module 2、端口聲明:input, output, inout
    發(fā)表于 06-23 14:58