日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

chisel(二)scala語法 函數(shù)與變量

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

掃碼添加小助手

加入工程師交流群

變量:

Scala在定義一個(gè)變量時(shí),必須在其變量名前添加關(guān)鍵字“var”或“val”這兩者的區(qū)別是“var”修飾的變量可以新賦值,并把原值拋棄,而用了“val”修飾的變量,則被禁止重新賦值。前者在定義后只可以修改,而后者是只能讀不能寫的變量。

在定義變量時(shí),Scala推薦的變量名命名方式是“駝峰命名法”,每個(gè)單詞的首字母大寫,變量名和函數(shù)名以小寫字母開頭,類、對象和特質(zhì)以大寫字母開頭。首次定義變量時(shí)就要給予具體的值來初始化。

在“var”類型重新賦值時(shí),新值和舊值是同一類型,否則就會發(fā)生類型匹配錯誤

由于Scala是函數(shù)式編程,函數(shù)式編程的思想之一就是傳入函數(shù)的參數(shù)不應(yīng)該被改變,所以Scala提倡建議val型變量。

函數(shù):

Scala的函數(shù)定義以“def”開頭,然后是一個(gè)自定義的函數(shù)名(推薦駝峰命名法),接著是用圓括號“( )”包起來的參數(shù)列表。在參數(shù)列表里,多個(gè)參數(shù)用逗號隔開,并且每個(gè)參數(shù)名后面要緊跟一個(gè)冒號以及顯式聲明的參數(shù)類型,因?yàn)榫幾g器在編譯期間無法推斷出入?yún)㈩愋汀懲陞?shù)列表后,應(yīng)該緊跟一個(gè)冒號,再添加函數(shù)返回結(jié)果的類型。最后,再寫一個(gè)等號“=”,等號后面是用花括號“{ }”包起來的函數(shù)體。例如:

用“def”開始函數(shù)定義

| 函數(shù)名

||參數(shù)及參數(shù)類型

|||函數(shù)返回結(jié)果的類型

||||等號

|||||

def max(x: Int, y: Int): Int = {

if(x > y)

x

else|

y|

}|

|

花括號里定義函數(shù)體

---------------------

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

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

在Scala的代碼里,句末的分號是可選的,但是如果一行有多條語句,則必須用分號隔開;如果一行只有一條完整語句,那么這個(gè)分號可以寫也可以不寫。函數(shù)的“return”關(guān)鍵字也是可選的,建議不要顯式聲明“return”。返回結(jié)果有一個(gè)特殊的類型“Unit”表示沒有返回值,該函數(shù)沒有任何可引用的返回結(jié)果。Unit類型同樣可以被推斷出來,但如果顯式聲明為Unit類型的函數(shù),則即使函數(shù)體最后有一個(gè)可以返回具體值的表達(dá)式,也不會把表達(dá)式的結(jié)果返回。

如果將函數(shù)定義在class、object、trait里面的函數(shù),這種函數(shù)叫做“成員函數(shù)”或者“方法”

四、函數(shù)字面量

函數(shù)式編程有兩個(gè)主要思想,其中之一就是:函數(shù)是一等(first-class)的值。換句話說,一個(gè)函數(shù)的地位與一個(gè)Int值、一個(gè)String值等等,是一樣的。既然一個(gè)Int值可以成為函數(shù)的參數(shù)、函數(shù)的返回值、定義在函數(shù)體里、存儲在變量里,那么,作為地位相同的函數(shù),也可以這樣。你可以把一個(gè)函數(shù)當(dāng)參數(shù)傳遞給另一個(gè)函數(shù),也可以讓一個(gè)函數(shù)返回一個(gè)函數(shù),亦可以把函數(shù)賦給一個(gè)變量,又或者像定義一個(gè)值那樣在函數(shù)里定義別的函數(shù)(即前述的嵌套函數(shù))。就像寫一個(gè)整數(shù)字面量“1”那樣,Scala也可以定義函數(shù)的字面量。函數(shù)字面量是一種匿名函數(shù)的形式,它可以存儲在變量里、成為函數(shù)參數(shù)或者當(dāng)作函數(shù)返回值,其定義形式為:

(參數(shù)1: 參數(shù)1類型, 參數(shù)2: 參數(shù)2類型, ...) => { 函數(shù)體 }

通常,函數(shù)字面量會賦給一個(gè)變量,這樣就能通過“變量名(參數(shù))”的形式來使用函數(shù)字面量。在參數(shù)類型可以被推斷的情況下,可以省略類型,并且參數(shù)只有一個(gè)時(shí),圓括號也可以省略。

函數(shù)字面量的形式可以更精簡,即只保留函數(shù)體,并用下劃線“_”作為占位符來代替參數(shù)。在參數(shù)類型不明確時(shí),需要在下劃線后面顯式聲明其類型。多個(gè)占位符代表多個(gè)參數(shù),即第一個(gè)占位符是第一個(gè)參數(shù),第二個(gè)占位符是第二個(gè)參數(shù)……因此不能重復(fù)使用某個(gè)參數(shù)。例如:

scala> val f = (_: Int) + (_: Int)

f: (Int, Int) => Int = $$Lambda$1072/1534177037@fb42c1c

scala> f(1, 2)

res0: Int = 3

無論是用“def”定義的函數(shù),還是函數(shù)字面量,它們的函數(shù)體都可以把一個(gè)函數(shù)字面量作為一個(gè)返回結(jié)果,這樣就成為了返回函數(shù)的函數(shù);它們的參數(shù)變量的類型也可以是一個(gè)函數(shù),這樣調(diào)用時(shí)給的入?yún)⒕涂梢允且粋€(gè)函數(shù)字面量。類型為函數(shù)的變量,其冒號后面的類型寫法是“(參數(shù)1類型, 參數(shù)2類型,...) => 返回結(jié)果的類型”。例如:

scala> val add = (x: Int) => { (y: Int) => x + y }

add: Int => (Int => Int) = $$Lambda$1192/1767705308@55456711

scala> add(1)(10)

res0: Int = 11

scala> def aFunc(f: Int => Int) = f(1) + 1

aFunc: (f: Int => Int)Int

scala> aFunc(x => x + 1)

res1: Int = 3

在第一個(gè)例子中,變量add被賦予了一個(gè)返回函數(shù)的函數(shù)字面量。在調(diào)用時(shí),第一個(gè)括號里的“1”是傳遞給參數(shù)x,第二個(gè)括號里的“10”是傳遞給參數(shù)y。如果沒有第二個(gè)括號,得到的就不是11,而是“(y: Int) => 1+ y”這個(gè)函數(shù)字面量。

在第二個(gè)例子中,函數(shù)aFunc的參數(shù)f是一個(gè)函數(shù),并且該函數(shù)要求是一個(gè)入?yún)镮nt類型、返回結(jié)果也是Int類型的函數(shù)。在調(diào)用時(shí),給出了函數(shù)字面量“x => x + 1”。這里沒有顯式聲明x的類型,因?yàn)榭梢酝ㄟ^f的類型來推斷出x必須是一個(gè)Int類型。在執(zhí)行時(shí),首先求值f(1),結(jié)合參數(shù)“1”和函數(shù)字面量,可以算出結(jié)果是2。那么,“f(1) + 1”就等于3了。

聲明:本文內(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

    瀏覽量

    6959
  • Chisel
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    飛凌嵌入式ElfBoard-環(huán)境變量之獲取環(huán)境變量

    讀。在應(yīng)用程序中,可以通過多種方式獲取當(dāng)前運(yùn)行環(huán)境的環(huán)境變量,main()函數(shù)的參數(shù),getenv()函數(shù),environ全局變量等。1.main1)
    發(fā)表于 03-13 08:50

    基于凌羽派的OpenHarmony北向應(yīng)用開發(fā):ArkTS語法-數(shù)據(jù)類型和變量聲明

    /master/samples/C02_DataTypeAndVariableDeclaration 、基礎(chǔ)知識 ArkTS通過聲明引入變量、常量、類型和函數(shù)。 2.1 變量聲明 使
    發(fā)表于 02-26 14:24

    基于凌羽派的OpenHarmony北向應(yīng)用開發(fā):ArkTS語法-數(shù)據(jù)類型和變量聲明

    一、簡介ArkTS是一種設(shè)計(jì)用于構(gòu)建高性能應(yīng)用的編程語言。它在繼承TypeScript語法的基礎(chǔ)上進(jìn)行了優(yōu)化,以提供更高的性能和開發(fā)效率。環(huán)境配置如下所示:API:18SDK:OpenHarmony-v5.1.0-Release
    的頭像 發(fā)表于 02-26 13:55 ?426次閱讀
    基于凌羽派的OpenHarmony北向應(yīng)用開發(fā):ArkTS<b class='flag-5'>語法</b>-數(shù)據(jù)類型和<b class='flag-5'>變量</b>聲明

    函數(shù)指針介紹

    y);int * fun(int x,int y);int* fun(int x,int y); 函數(shù)指針,其本質(zhì)是一個(gè)指針變量,該指針指向這個(gè)函數(shù)??偨Y(jié)來說,函數(shù)指針就是指向
    發(fā)表于 01-21 08:11

    函數(shù)指針的概念

    函數(shù)指針是指向函數(shù)的指針變量。 通常我們說的指針變量是指向一個(gè)整型、字符型或數(shù)組等變量,而函數(shù)
    發(fā)表于 12-11 08:10

    使用setjmp及l(fā)ongjmp函數(shù)處理異常

    ,例如在發(fā)生錯誤或異常時(shí),直接跳轉(zhuǎn)到錯誤處理或資源釋放的代碼,而不需要逐層返回。setjmp和longjmp函數(shù)定義在setjmp.h頭文件中,其語法為: int setjmp(jmp_buf
    發(fā)表于 12-11 08:00

    如何用函數(shù)指針調(diào)用函數(shù)

    給大家舉一個(gè)例子: int Func(int x);/*聲明一個(gè)函數(shù)*/ int (*p) (int x);/*定義一個(gè)函數(shù)指針*/ p = Func; /*將Func函數(shù)的首地址賦給指針
    發(fā)表于 12-11 06:26

    第7章 變量進(jìn)階與點(diǎn)陣LED(7.1 7.2)

    知識——變量的作用域和存儲類別。 7.1變量的作用域 所謂的作用域就是指變量起作用的范圍,也是變量的有效范圍。變量按他的作用域可以分為局部
    的頭像 發(fā)表于 12-10 16:25 ?508次閱讀

    常用變量的介紹

    extern:用在全局變量上表示該變量在其他文件中已經(jīng)定義;用在函數(shù)上作用同全局變量; static:用在全局變量上,和非靜態(tài)全局
    發(fā)表于 11-21 07:05

    C語言開發(fā)單片機(jī)為什么大多數(shù)都采用全局變量的形式?

    單片機(jī)的芯片資源從來都是 “精打細(xì)算” 的級別,CPU 主頻普遍不高,RAM 總?cè)萘勘揪途o張,分給棧空間的更是少得可憐。要是像普通軟件那樣,依賴函數(shù)返回值傳遞數(shù)據(jù)、頻繁用局部變量周轉(zhuǎn),一來去占用
    的頭像 發(fā)表于 11-12 14:29 ?577次閱讀
    C語言開發(fā)單片機(jī)為什么大多數(shù)都采用全局<b class='flag-5'>變量</b>的形式?

    如何將某個(gè)函數(shù)變量放在固定的地址 ?

    如題,如何將某個(gè)函數(shù)或者變量放在固定的地址?類似于__attribute__( at(絕對地址) ),用的nucleistudio ide, __attribute__( at(絕對地址) )出現(xiàn)警告 at屬性被忽視,有類似的屬性嗎?
    發(fā)表于 11-07 06:07

    語法糾錯和testbench的自動生成

    在編寫Verilog代碼時(shí),我一般都是先在編輯器上寫完,因?yàn)榫庉嬈鱲scode或者notepad++可以提供語法高亮和自動補(bǔ)全等功能,然后用仿真器跑仿真,但是在編寫過程中不可避免的會有一些語法的錯誤
    發(fā)表于 10-27 07:07

    使用AURIX進(jìn)行調(diào)試的過程中,如果進(jìn)入某個(gè)函數(shù)的時(shí)候出現(xiàn)問題,是配置項(xiàng)的問題還是函數(shù)中的變量的問題?

    在使用AURIX進(jìn)行調(diào)試的過程中,如果進(jìn)入某個(gè)函數(shù)的時(shí)候出現(xiàn)問題,是配置項(xiàng)的問題還是函數(shù)中的變量的問題?
    發(fā)表于 08-11 07:17

    解鎖LuatOS新世界:次開發(fā)必備的3個(gè)核心常識

    來了解LuatOS開發(fā)需要熟悉的幾個(gè)常識。 ? 一、匿名函數(shù) 在Lua代碼里面,經(jīng)??吹?jīng)]有名字的函數(shù)。 這種函數(shù)定義之后,要么馬上運(yùn)行,要么作為另一個(gè)函數(shù)的返回值賦給其他
    的頭像 發(fā)表于 06-23 16:08 ?474次閱讀
    解鎖LuatOS新世界:<b class='flag-5'>二</b>次開發(fā)必備的3個(gè)核心常識

    突破LuatOS開發(fā)瓶頸:三個(gè)次開發(fā)必備知識揭秘!

    。 ? 一、匿名函數(shù) 在Lua代碼里面,經(jīng)??吹?jīng)]有名字的函數(shù)。 這種函數(shù)定義之后,要么馬上運(yùn)行,要么作為另一個(gè)函數(shù)的返回值賦給其他變量,所
    的頭像 發(fā)表于 06-23 15:05 ?527次閱讀
    突破LuatOS開發(fā)瓶頸:三個(gè)<b class='flag-5'>二</b>次開發(fā)必備知識揭秘!
    商丘市| 南郑县| 秭归县| 厦门市| 石嘴山市| 潮安县| 繁昌县| 托克逊县| 柘城县| 咸阳市| 福清市| 澄江县| 东丽区| 宜丰县| 曲麻莱县| 确山县| 通许县| 茌平县| 安阳县| 延津县| 金山区| 保德县| 张北县| 高雄县| 通州市| 米脂县| 海阳市| 黄浦区| 南部县| 阿尔山市| 临汾市| 巫溪县| 安泽县| 郯城县| 泾阳县| 湾仔区| 措勤县| 鄂尔多斯市| 翁牛特旗| 伊金霍洛旗| 合肥市|