91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

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

函數(shù):

Scala的函數(shù)定義以“def”開頭,然后是一個自定義的函數(shù)名(推薦駝峰命名法),接著是用圓括號“( )”包起來的參數(shù)列表。在參數(shù)列表里,多個參數(shù)用逗號隔開,并且每個參數(shù)名后面要緊跟一個冒號以及顯式聲明的參數(shù)類型,因為編譯器在編譯期間無法推斷出入?yún)㈩愋?。寫完參?shù)列表后,應(yīng)該緊跟一個冒號,再添加函數(shù)返回結(jié)果的類型。最后,再寫一個等號“=”,等號后面是用花括號“{ }”包起來的函數(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的代碼里,句末的分號是可選的,但是如果一行有多條語句,則必須用分號隔開;如果一行只有一條完整語句,那么這個分號可以寫也可以不寫。函數(shù)的“return”關(guān)鍵字也是可選的,建議不要顯式聲明“return”。返回結(jié)果有一個特殊的類型“Unit”表示沒有返回值,該函數(shù)沒有任何可引用的返回結(jié)果。Unit類型同樣可以被推斷出來,但如果顯式聲明為Unit類型的函數(shù),則即使函數(shù)體最后有一個可以返回具體值的表達(dá)式,也不會把表達(dá)式的結(jié)果返回。

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

四、函數(shù)字面量

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

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

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

函數(shù)字面量的形式可以更精簡,即只保留函數(shù)體,并用下劃線“_”作為占位符來代替參數(shù)。在參數(shù)類型不明確時,需要在下劃線后面顯式聲明其類型。多個占位符代表多個參數(shù),即第一個占位符是第一個參數(shù),第二個占位符是第二個參數(shù)……因此不能重復(fù)使用某個參數(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ù)體都可以把一個函數(shù)字面量作為一個返回結(jié)果,這樣就成為了返回函數(shù)的函數(shù);它們的參數(shù)變量的類型也可以是一個函數(shù),這樣調(diào)用時給的入?yún)⒕涂梢允且粋€函數(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

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

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

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

    關(guān)注

    0

    文章

    42

    瀏覽量

    6907
  • Chisel
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    基于凌羽派的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è)計用于構(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 ?212次閱讀
    基于凌羽派的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ì)是一個指針變量,該指針指向這個函數(shù)??偨Y(jié)來說,函數(shù)指針就是指向
    發(fā)表于 01-21 08:11

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

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

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

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

    常用變量的介紹

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

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

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

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

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

    語法糾錯和testbench的自動生成

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

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

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

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

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

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

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

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

    函數(shù)變量指定section放置方法與操作流程,兼具過程記錄與詳細(xì)說明,旨在打造一份實用的參考指南,助力開發(fā)者精準(zhǔn)掌控程序的內(nèi)存分布與執(zhí)行邏輯。文檔涵蓋從默認(rèn)section表的介紹,到多種放置手段的闡釋,以及實際配置示例的展示,為后續(xù)的開發(fā)工作奠定堅實基礎(chǔ)。
    的頭像 發(fā)表于 04-30 16:38 ?772次閱讀
    基于 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以及$$語法糖介紹

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

    Ansible Playbook中的變量使用技巧

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