開始在 Visual Studio Code 中使用 F#
您可以使用 Ionide 外掛程式在 Visual Studio Code 中撰寫 F#,以透過 IntelliSense 和程式碼重構獲得絕佳的跨平台輕量型整合式開發環境 (IDE)體驗。 請造訪 Ionide.io 以深入了解外掛程式。
首先,請確定您已正確安裝 F# 和 Ionide 外掛程式。
使用 Ionide 建立您的第一個專案
若要建立新的 F# 專案,請開啟命令列,並使用 .NET CLI 建立新的專案:
dotnet new console -lang "F#" -o FirstIonideProject
完成後,請將目錄切換至專案,然後開啟 Visual Studio Code:
cd FirstIonideProject
code .
在 Visual Studio Code 中載入專案後,您應該會在視窗左側看到 [F# 方案總管] 窗格開啟。 這表示 Ionide 已成功載入您剛才建立的專案。 在此時間點之前,您可以在編輯器中撰寫程式碼,但在此之後,一切都已完成載入。
撰寫您的第一個指令碼
設定 Visual Studio Code 以使用 .NET Core 指令碼之後,請瀏覽至 Visual Studio Code 中的 [總管] 檢視,並建立新的檔案。 將其命名為 MyFirstScript.fsx。
現在,在其中新增下列程式碼:
let toPigLatin (word: string) =
let isVowel (c: char) =
match c with
| 'a' | 'e' | 'i' | 'o' | 'u'
| 'A' | 'E' | 'I' | 'O' | 'U' -> true
|_ -> false
if isVowel word[0] then
word + "yay"
else
word[1..] + string(word[0]) + "ay"
此函式會將單字轉換為 Pig Latin 的形式。 下一個步驟是使用 F# 互動 (FSI) 加以評估。
將整個函式醒目提示 (長度應為 11 行)。 將其醒目提示後,按住 Alt 鍵並按 Enter 鍵。 您會注意到螢幕底部有快顯的終端機視窗,應該會顯示如下:
這執行了三項作業:
- 啟動 FSI 程序。
- 將您醒目提示的程式碼傳送至 FSI 程序。
- FSI 程序評估您傳送過去的程式碼。
您傳送過去的是函式,因此您現在可以使用 FSI 呼叫該函式。 在互動式視窗中,輸入下列內容:
toPigLatin "banana";;
您應該會看到下列結果:
val it: string = "ananabay"
現在,我們嘗試用母音作為第一個字母。 輸入下列內容:
toPigLatin "apple";;
您應該會看到下列結果:
val it: string = "appleyay"
函式的運作似乎符合預期。 恭喜,您剛在 Visual Studio Code 中撰寫了第一個 F# 函式,並使用 FSI 加以評估。
注意
您可能已注意到,FSI 中的行以 ;;
結尾。 這是因為 FSI 可讓您輸入多行。 結尾處的 ;;
可讓 FSI 得知程式碼於何時完成。
說明程式碼
如果您不確定程式碼的實際作用,請參考以下逐步說明。
如您所見,toPigLatin
是一個函式,以單字作為其輸入,並將其轉換為那個字的 Pig-Latin 表示法。 其規則如下:
如果單字中的第一個字元以母音開頭,請在字尾新增 "yay"。 如果不是以母音開頭,請將第一個字元移至字尾,並為其新增 "ay"。
您可能已在 FSI 中注意到下列事項:
val toPigLatin: word: string -> string
這表示 toPigLatin
是以 string
作為輸入 (稱為 word
)、並傳回另一個 string
的函式。 我們稱之為函式的型別簽章,此為 F# 的基本組成,是了解 F# 程式碼的關鍵。 如果您在 Visual Studio Code 中將滑鼠暫留在函式上方,也會看到此內容。
在函式主體中,您會看到兩個不同的部分:
名為
isVowel
的內部函式,會透過模式比對檢查指定的字元 (c
) 是否與提供的模式中的相符,以確認該字元是否為母音:let isVowel (c: char) = match c with | 'a' | 'e' | 'i' | 'o' | 'u' | 'A' | 'E' | 'I' | 'O' | 'U' -> true |_ -> false
if..then..else
運算式,會檢查第一個字元是否為母音,並據此從輸入字元建構傳回值:if isVowel word[0] then word + "yay" else word[1..] + string(word[0]) + "ay"
toPigLatin
的流程如下:
檢查輸入單字的第一個字元是否為母音。 如果是,請在字尾附加 "yay"。 如果不是,請將第一個字元移至字尾,並為其新增 "ay"。
最後要注意的相關事項:在 F# 中,沒有會從函式傳回的明確指令。 這是因為 F# 以運算式為基礎,而函式主體中評估的最後一個運算式會決定該函式的傳回值。 由於 if..then..else
本身是運算式,then
區塊主體或 else
區塊主體的評估會決定 toPigLatin
函式所傳回的值。
將主控台應用程式轉換為 Pig Latin 產生器
本文的前幾節示範了撰寫 F# 程式碼常見的第一步:撰寫初始函式,並使用 FSI 以互動方式執行。 這稱為 REPL 驅動開發,其中,REPL 代表「讀取、評估、列印迴圈」。 這很適合您用來試驗並找出有效用的功能。
REPL 驅動開發的下一個步驟是將可運作的程式碼移至 F# 實作檔案中。 隨後,F# 編譯器可將其編譯成可執行的組件。
首先,請開啟您先前使用 .NET CLI 建立的 Program.fs 檔案。 您會看到該處已有某些程式碼。
接著,建立名為 PigLatin
的新 module
,並將您先前建立的 toPigLatin
函式複製到其中,如下所示:
module PigLatin =
let toPigLatin (word: string) =
let isVowel (c: char) =
match c with
| 'a' | 'e' | 'i' | 'o' | 'u'
| 'A' | 'E' | 'I' | 'O' | 'U' -> true
|_ -> false
if isVowel word[0] then
word + "yay"
else
word[1..] + string word[0] + "ay"
此模組應位於 main
函式上方與 open System
宣告下方。 宣告的順序在 F# 中有其重要性,因此您必須先定義函式,才能在檔案中加以呼叫。
現在,在 main
函式中,對引數呼叫 Pig Latin 產生器函式:
[<EntryPoint>]
let main args =
for arg in args do
let newArg = PigLatin.toPigLatin arg
printfn "%s in Pig Latin is: %s" arg newArg
0
此時您可以從命令列中執行主控台應用程式:
dotnet run apple banana
您會看到其輸出結果與您的指令檔相同,但這次是以程式的形式執行的。
對 Ionide 進行疑難排解
以下有幾種方式可讓您對可能遇到的特定問題進行疑難排解:
- 若要取得 Ionide 的程式碼編輯功能,您的 F# 檔案必須儲存至磁碟,並且位於在 Visual Studio Code 工作區中開啟的資料夾內。
- 如果您在 Visual Studio Code 開啟時對系統或已安裝的 Ionide 必要項目做了變更,請重新啟動 Visual Studio Code。
- 如果您的專案目錄中有無效的字元,Ionide 可能無法運作。 若是如此,請將您的專案目錄重新命名。
- 如果 Ionide 命令都無法運作,請檢查您的 Visual Studio Code 按鍵繫結關係,確認您是否非預期地加以覆寫。
- 如果 Ionide 在機器上已中斷,且上述任何方法都無法解決您的問題,請嘗試移除機器上的
ionide-fsharp
目錄,然後重新安裝外掛程式套件。 - 如果專案無法載入 (F# 方案總管會顯示),請以滑鼠右鍵按一下該專案,然後按一下 [查看詳細資料] 以取得更多診斷資訊。
Ionide 是由 F# 社群的成員建置和維護的開放原始碼專案。 歡迎透過 ionide-vscode-fsharp GitHub 存放庫回報問題並參與。
您也可以向 Ionide Gitter 通道中的 Ionide 開發人員和 F# 社群尋求進一步協助。
下一步
若要深入了解 F# 和該語言的功能,請參閱 F# 導覽。