一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

Chisel(三) Scala語法 類與對象

學(xué)FPGA,慢慢來 ? 2019-08-19 23:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

在Scala中不需要顯式定義構(gòu)造方法,而是把類內(nèi)部非字段、非方法的代碼都當(dāng)做“主構(gòu)造方法”,而且,類名后面可以定義若干個(gè)參數(shù)列表,用于接收參數(shù),這些參數(shù)將在構(gòu)造對象時(shí)用于初始化字段并傳遞給主構(gòu)造方法使用。除了主構(gòu)造方法,還可以定義若干個(gè)輔助構(gòu)造方法。輔助構(gòu)造方法都是以“defthis(...)”來開頭的,而且第一步行為必須是調(diào)用該類的另一個(gè)構(gòu)造方法,即第一句語句必須是“this(...)”——要么是主構(gòu)造方法,要么是之前的另一個(gè)輔助構(gòu)造方法。

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

在這個(gè)例子中,定義了一個(gè)輔助構(gòu)造方法,該方法是無參的,其行為也僅是給主構(gòu)造方法傳遞一個(gè)字符串“None”。在后面創(chuàng)建對象時(shí),缺省了參數(shù),這樣與主構(gòu)造方法的參數(shù)列表是不匹配的,但是與輔助構(gòu)造方法匹配,所以stu指向的對象是用輔助構(gòu)造方法構(gòu)造的。

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

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

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

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

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

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



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

    關(guān)注

    0

    文章

    42

    瀏覽量

    6685
  • Chisel
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    514
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    對象存儲(chǔ)是什么結(jié)構(gòu)類型?

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

    為什么選不中PCB上的對象?

    “ ?經(jīng)常看到討論區(qū)有小伙伴問,為什么我無法選中PCB上的器件?。坎还苁屈c(diǎn)選,還是框選,都完全沒有效果!是不是我的版本有bug? ” 在KiCad,選不中對象大概率的原因是因?yàn)槠骷绘i定。 如下
    的頭像 發(fā)表于 11-12 12:23 ?2783次閱讀
    為什么選不中PCB上的<b class='flag-5'>對象</b>?

    硬件設(shè)計(jì)技巧:三類GPIO接口的實(shí)用指南

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

    不可錯(cuò)過的三類GPIO硬件設(shè)計(jì)指南!

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

    Lua語法基礎(chǔ)教程(中篇)

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

    Verilog語法中運(yùn)算符的用法

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

    Lua語法基礎(chǔ)教程(上篇)

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

    《DNK210使用指南 -CanMV版 V1.0》第十九章 machine.PWM實(shí)驗(yàn)

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

    《DNK210使用指南 -CanMV版 V1.0》第十八章 machine.Timer實(shí)驗(yàn)

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

    《DNK210使用指南 -CanMV版 V1.0》第十七章 machine.WDT實(shí)驗(yàn)

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

    常用對象文件格式

    電子發(fā)燒友網(wǎng)站提供《常用對象文件格式.pdf》資料免費(fèi)下載
    發(fā)表于 10-15 09:25 ?0次下載
    常用<b class='flag-5'>對象</b>文件格式

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

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

    java子類可以繼承父的什么

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

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

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

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

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