2015-12-02 56 views
-1

如何使用REPL顯示數據?無法使用REPL顯示數據

我確定這是一個非常基本的問題。

我引用了this

我在REPL窗口中粘貼了代碼。但是我沒有看到顯示卡。

type Suit = | Spades 
      | Diamonds 
      | Clubs 
      | Hearts 

type Face = |Two | Three | Four | Five 
      | Six | Seven | Eight | Nine | Ten 
      | Jack | Queen | King | Ace 

type Card = {Face: Face; Suit: Suit} 

type Deal = | Hand of Card * Card 
      | Hit of Card 

let dealPlayer() = Hit{Face=Two; Suit=Spades} 
dealPlayer |> printfn "%A" 

結果:

VAL它:單位=()

更新

當我更新代碼爲以下:

let dealPlayer() = Hit{Face=Two; Suit=Spades} 
dealPlayer() |> printfn "%A" 

我仍然得到這樣的:

VAL dealPlayer:單位 - >應對VAL是:單位=()

回答

1

您還沒有評估`dealPlayer」功能。

變化

dealPlayer |> printfn "%A" 

dealPlayer() |> printfn "%A" 

注意:您可能會想運行代碼後剩下的行dealPlayer() |> printfn "%A";;,否則打印的文本將出現在頂部從REPL返回,然後打印出您聲明的類型以及您聲明的函數的類型簽名。

+0

感謝InnerLight。我做了更新。但我沒有觀察到差異。 –

+0

@ScottNimrod在評估代碼塊的其餘部分後,如果粘貼'dealPlayer()|> printfn「%A ;;」''',則會更容易觀察結果。 – TheInnerLight

3

您不必在FSI中明確打印值;它自動會替你當你計算表達式:

> dealPlayer();; 
val it : Deal = Hit {Face = Two; 
        Suit = Spades;} 

如果你不表達到一個名爲值綁定,它會被綁定到內含價值it,如上圖所示。

FSI很好地格式化並顯示功能數據類型:記錄,區分聯合,列表,數組。對於對象,它通常會調用ToString()以獲得顯示值。