如何使用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 it:unit =()
更新
当我将代码更新为以下内容时:
let dealPlayer() = Hit{Face=Two; Suit=Spades}
dealPlayer() |> printfn "%A"
我仍然明白这一点:
val dealPlayer:unit - >处理它:unit =()
答案 0 :(得分:3)
您不必在FSI中明确打印值;它会在您评估表达式时自动为您执行此操作:
> dealPlayer ();;
val it : Deal = Hit {Face = Two;
Suit = Spades;}
如果您不将表达式绑定到命名值,则它将绑定到隐式值it
,如上所示。
FSI很好地格式化并显示功能数据类型:记录,区分联合,列表,数组。对于对象,它通常会调用ToString()
以获取显示值。
答案 1 :(得分:1)
你没有评估`dealPlayer'功能
更改
dealPlayer |> printfn "%A"
到
dealPlayer() |> printfn "%A"
注意:您可能希望在其余代码之后运行行dealPlayer() |> printfn "%A";;
,否则打印文本将出现在REPL返回的顶部,然后打印输出您声明的类型以及您声明的函数的类型签名。