F?;菊Z法

2018-12-14 16:56 更新

您已經(jīng)看到了F#程序的基本結(jié)構(gòu),因此很容易理解F#編程語言的其他基本構(gòu)建塊。

F# tokens

F#程序由各種tokens組成。 tokens可以是關(guān)鍵字,標識符,常量,字符串文字或符號。 我們可以將F#tokens分為兩種類型 -

  • 關(guān)鍵詞
  • 符號和操作符

F# keywords

下表顯示了 keywords的簡要說明。 我們將在后續(xù)章節(jié)討論這些 keywords的使用。

關(guān)鍵詞描述
abstract
表示在聲明的類型中沒有實現(xiàn)的方法,或者是虛擬的并且具有默認實現(xiàn)的方法。
and
用于相互遞歸的綁定,在屬性聲明,并與泛型參數(shù)多個約束。
as
用來給當前類對象的對象名。也用于給一個名字模式匹配內(nèi)的整個模式。
assert
用于在調(diào)試過程中驗證代碼。
base
用作基類對象的名稱。
begin
在冗長的語法,表示一個代碼塊的開始。
class
在冗長的語法,表示一個類定義的開始。
default
表示抽象方法的實現(xiàn);與抽象方法聲明一起使用,以創(chuàng)建一個虛擬的方法。
delegate
用于聲明委托。
do
用于循環(huán)結(jié)構(gòu)或者執(zhí)行必要的代碼。
done
在詳細的語法,指示代碼中循環(huán)表達塊的結(jié)束。
downcast
用于轉(zhuǎn)換為繼承鏈中較低的類型。
downto
用于反向計數(shù)。
elif
使用條件分支。如果其他的縮寫形式。
else
使用條件分支。
end

在類型定義和擴展類型,表示成員定義一節(jié)的末尾。

在冗長的語法,用于指定的關(guān)鍵字開頭開始一個代碼塊的結(jié)束。

exception
用于聲明異常類型。
extern
指示已聲明的程序元素在另一個二進制文件或程序集中定義。
false
作為一個布爾值。
finally
與嘗試一起使用,以引入執(zhí)行無論是否發(fā)生異常的代碼塊。
for
用于循環(huán)結(jié)構(gòu)。
fun
應(yīng)用于lambda表達式,也稱為匿名函數(shù)。
function
用作fun關(guān)鍵字的一個較短的替代方法,以及在單個參數(shù)上具有模式匹配的lambda表達式中的匹配表達式。
global
用于引用頂層.NET命名空間。
if
在使用條件分支結(jié)構(gòu)。
in
用于序列的表達,并在詳細的語法,從單獨的綁定表達式。
inherit
用于指定基類或基本接口。
inline
用于指示應(yīng)該直接集成到調(diào)用者代碼中的函數(shù)。
interface
用于聲明和實現(xiàn)接口。
internal
用于指定一個成員是一個組件內(nèi)可見,但不是外面。
lazy
用于指定的運算即需要一個結(jié)果,只有當被執(zhí)行。
let
用于相關(guān)聯(lián),或結(jié)合,一個名字的值或功能。
let!
在異步工作流用于一個名稱綁定到一個異步計算,或者,在其它的計算表達式的結(jié)果,用于將一個名稱綁定到的結(jié)果,也就是計算類型。
match
一個值比較的模式用于分支。
member
用來聲明對象類型的屬性或方法。
module
用于將名稱與一組相關(guān)的類型,價值和功能聯(lián)系起來,在邏輯上它與其他代碼中分離出來。
mutable
用于聲明變量,也就是說,是可以改變的一個值。
namespace
用于將名稱與一組相關(guān)的種類和模塊相關(guān)聯(lián),在邏輯上它與其他代碼中分離出來。
new

用于聲明,定義或調(diào)用創(chuàng)建或者它可以創(chuàng)建一個對象的構(gòu)造函數(shù)。

在泛型參數(shù)約束也用來表示一個類型必須有一定的構(gòu)造函數(shù)。

not
實際上不是一個關(guān)鍵字。然而,并非在組合結(jié)構(gòu)體被用作一個通用的參數(shù)約束。
null

表明不存在一個對象。

在泛型參數(shù)約束也使用。

of
用于識別聯(lián)合指示值類的類型,并在代表和異常聲明。
open
用于使名稱空間或模塊的內(nèi)容可用,無需限定。
or

與布爾條件一起使用作為布爾或運算符。 相當于||。
也用于成員約束。

override
用于實現(xiàn)一個版本從基部版本不同的抽象的或虛擬的方法。
private
限制訪問一個構(gòu)件到代碼中的相同類型或模塊。
public
允許從種類以外訪問成員。
rec
用于指示一個功能是遞歸的。
return
用于指示值,以提供作為計算表達式的結(jié)果。
return!
用于指示計算表達式,評估時,提供了含有計算表達式的結(jié)果。
select
用于查詢表達式來指定哪些領(lǐng)域或列中提取。注意,這是一個上下文關(guān)鍵字,這意味著它是不實際的保留字,它僅作用就像在適當?shù)姆秶鷥?nèi)的關(guān)鍵字。
static
用于指示的方法或?qū)傩?,可以在沒有類型,或者是一類的所有實例之間共享的值構(gòu)件的一個實例被調(diào)用。
struct

用來聲明結(jié)構(gòu)類型。

在泛型參數(shù)約束也使用。

用于模塊定義OCaml的兼容性。

then

用于在條件表達式。

也用于執(zhí)行對象的構(gòu)造后的副作用。

to
用在for循環(huán)來表示的范圍。
true
作為一個布爾值。
try
用于引入可能生成異常的代碼塊。 與finally一起使用。
type
用于聲明一個類,記錄,結(jié)構(gòu),識別聯(lián)合,枚舉類型,計量單位或類型的縮寫。
upcast
用于轉(zhuǎn)換為一個類型,是在繼承鏈高。
use
用于轉(zhuǎn)換為在繼承鏈中較高的類型。
use!
用來代替let! 在異步工作流和其他計算表達式的值需要Dispose被調(diào)用以釋放資源。
val
用于在簽名,以指示一個值,或在一個類型聲明一個部件,在有限的情況下。
void
指示.NET void類型。與其他.NET語言互操作時使用。
when
用于模式匹配的布爾條件(當guards時),并為通用類型參數(shù)引入約束子句。
while
引入了一個循環(huán)結(jié)構(gòu)。
with

在模式匹配表達式匹配關(guān)鍵字一起使用。對象表達式,記錄復(fù)制表達式和類型擴展名也被用來引進的成員定義,并引入異常處理程序。
yield
用于在序列表達以產(chǎn)生用于一序列的值。
yield!
用于在一個計算表達式給定的計算表達式的結(jié)果追加到的結(jié)果為含有計算表達式的集合。

有些保留關(guān)鍵字從OCaml的語言來 

asrlandlorlsllsrlxormodsig

保留一些其他保留的關(guān)鍵字用于將來擴展F#

atomicbreakcheckedcomponentconstconstraintconstructor
continueeagereventexternalfixedfunctorinclude
methodmixinobjectparallelprocessprotectedpure
sealedtailcalltraitvirtualvolatile  

在F#注釋

F#提供了兩種類型的注釋 -

  • 一個行注釋開始于//符號。
  • 多行注釋以(*帶*號結(jié)束)。

基本程序和應(yīng)用程序入口點在F#

一般來說,F(xiàn)#程序沒有任何明確的入口點。 當編譯F#應(yīng)用程序時,提供給編譯器的最后一個文件成為入口點,并且該文件中的所有頂級語句從上到下執(zhí)行。

一個編寫良好的程序應(yīng)該有一個頂層語句,它將調(diào)用程序的主循環(huán)。

一個非常簡約的F#程序,將在屏幕上顯示“Hello World”

(* This is a comment *)
(* Sample Hello World program using F# *)
printfn "Hello World!"

當你編譯和執(zhí)行程序,它產(chǎn)生以下輸出 -

Hello World!

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號