chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

變量:

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

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

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

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

函數(shù):

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

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

| 函數(shù)名

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

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

||||等號(hào)

|||||

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

if(x > y)

x

else|

y|

}|

|

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

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

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

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

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

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

四、函數(shù)字面量

函數(shù)式編程有兩個(gè)主要思想,其中之一就是:函數(shù)是一等(first-class)的值。換句話說(shuō),一個(gè)函數(shù)的地位與一個(gè)Int值、一個(gè)String值等等,是一樣的。既然一個(gè)Int值可以成為函數(shù)的參數(shù)、函數(shù)的返回值、定義在函數(shù)體里、存儲(chǔ)在變量里,那么,作為地位相同的函數(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ù)的形式,它可以存儲(chǔ)在變量里、成為函數(shù)參數(shù)或者當(dāng)作函數(shù)返回值,其定義形式為:

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

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

函數(shù)字面量的形式可以更精簡(jiǎn),即只保留函數(shù)體,并用下劃線“_”作為占位符來(lái)代替參數(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

無(wú)論是用“def”定義的函數(shù),還是函數(shù)字面量,它們的函數(shù)體都可以把一個(gè)函數(shù)字面量作為一個(gè)返回結(jié)果,這樣就成為了返回函數(shù)的函數(shù);它們的參數(shù)變量的類型也可以是一個(gè)函數(shù),這樣調(diào)用時(shí)給的入?yún)⒕涂梢允且粋€(gè)函數(shù)字面量。類型為函數(shù)的變量,其冒號(hào)后面的類型寫法是“(參數(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è)括號(hào)里的“1”是傳遞給參數(shù)x,第二個(gè)括號(hào)里的“10”是傳遞給參數(shù)y。如果沒(méi)有第二個(gè)括號(hào),得到的就不是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”。這里沒(méi)有顯式聲明x的類型,因?yàn)榭梢酝ㄟ^(guò)f的類型來(lái)推斷出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)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • scala
    +關(guān)注

    關(guān)注

    0

    文章

    42

    瀏覽量

    6833
  • Chisel
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    函數(shù)指針的概念

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

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

    ,例如在發(fā)生錯(cuò)誤或異常時(shí),直接跳轉(zhuǎn)到錯(cuò)誤處理或資源釋放的代碼,而不需要逐層返回。setjmp和longjmp函數(shù)定義在setjmp.h頭文件中,其語(yǔ)法為: 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)

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

    常用變量的介紹

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

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

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

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

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

    語(yǔ)法糾錯(cuò)和testbench的自動(dòng)生成

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

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

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

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

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

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

    。 ? 一、匿名函數(shù) 在Lua代碼里面,經(jīng)??吹?jīng)]有名字的函數(shù)。 這種函數(shù)定義之后,要么馬上運(yùn)行,要么作為另一個(gè)函數(shù)的返回值賦給其他變量,所
    的頭像 發(fā)表于 06-23 15:05 ?278次閱讀
    突破LuatOS開發(fā)瓶頸:三個(gè)<b class='flag-5'>二</b>次開發(fā)必備知識(shí)揭秘!

    基于 IAR Embedded Workbench 的自研 MCU 芯片軟件函數(shù)變量內(nèi)存布局優(yōu)化精控方法

    函數(shù)變量指定section放置方法與操作流程,兼具過(guò)程記錄與詳細(xì)說(shuō)明,旨在打造一份實(shí)用的參考指南,助力開發(fā)者精準(zhǔn)掌控程序的內(nèi)存分布與執(zhí)行邏輯。文檔涵蓋從默認(rèn)section表的介紹,到多種放置手段的闡釋,以及實(shí)際配置示例的展示,為后續(xù)的開發(fā)工作奠定堅(jiān)實(shí)基礎(chǔ)。
    的頭像 發(fā)表于 04-30 16:38 ?616次閱讀
    基于 IAR Embedded Workbench 的自研 MCU 芯片軟件<b class='flag-5'>函數(shù)</b>與<b class='flag-5'>變量</b>內(nèi)存布局優(yōu)化精控方法

    harmony OS NEXT-雙向數(shù)據(jù)綁定MVVM以及$$語(yǔ)法糖介紹

    # 鴻蒙Harmony-雙向數(shù)據(jù)綁定MVVM以及$$語(yǔ)法糖介紹 ## 1.1 雙向數(shù)據(jù)綁定概念 在鴻蒙(HarmonyOS)應(yīng)用開發(fā)中,雙向數(shù)據(jù)改變(或雙向數(shù)據(jù)綁定)是一種讓數(shù)據(jù)·模型和UI組件之間
    的頭像 發(fā)表于 04-29 16:52 ?1136次閱讀

    Ansible Playbook中的變量使用技巧

    在inventory中定義的連接變量(比如ansible_ssh_user);優(yōu)先級(jí)第。
    的頭像 發(fā)表于 04-15 10:26 ?712次閱讀

    如何把兩個(gè)數(shù)據(jù)返回給調(diào)用函數(shù)

    函數(shù)的處理結(jié)果包含兩個(gè)數(shù)據(jù),如何把兩個(gè)數(shù)據(jù)返回給調(diào)用函數(shù)? 第一種,把兩個(gè)數(shù)據(jù)封裝成一個(gè)結(jié)構(gòu)體,函數(shù)返回結(jié)構(gòu)體。 調(diào)用函數(shù)的地方同樣用結(jié)構(gòu)體去接收
    的頭像 發(fā)表于 01-08 10:15 ?701次閱讀