我可以在 F# Interactive 中获取没有内容的值的推断类型吗?
Can I get the inferred type of a value, without the contents, in F# Interactive?
在 F# Interactive 控制台中创建值时,会显示推断的类型和值的内容。
以后如何在不显示所有内容的情况下重新显示推断类型?
例如,我有一个包含 1000 个项目的数组 mydata
。在 F# Interactive 控制台中键入 mydata
将显示类型以及数组的内容。
Unquote 具有以下类型的扩展名 属性:
> let mydata = [|Some([42])|];;
val mydata : int list option [] = [|Some [42]|]
> mydata.GetType().FSharpName;;
val it : string = "option<list<int>>[]"
像这样使用 printfn 怎么样:
F# Interactive for F# 3.1 (Open Source Edition)
Freely distributed under the Apache 2.0 Open Source License
For help type #help;;
>
val mya : int [] = [|3; 2; 5; 6; 7; 8|]
> printfn "%A" (mya.GetType());;
System.Int32[]
val it : unit = ()
您可以使用一些实用函数来缩短所需的输入:
let pm v = printfn "%A" (v.GetType())
你可以使用如下:
> pm mya;;
System.Int32[]
val it : unit = ()
"pm"代表"print me"。随心所欲地称呼它:)
如果您不喜欢 GetType() 中的类型名称,另一种方法是让您想要评估的值出错。这将为您提供更友好的 F# 类型名称(当然,如果您不介意忽略该错误)。例如在列表中你可以这样做:
>
val myl : string list = ["one"; "two"]
> printfn myl;;
Script.fsx(195,9): error FS0001: The type 'string list' is not compatible with the type 'Printf.TextWriterFormat<'a>'
注意''
之间的类型字符串列表
最后你可以使用:(MSDN)
fsi.ShowDeclarationValues <- false
但这只会让初始评估静音。
在 F# Interactive 控制台中创建值时,会显示推断的类型和值的内容。
以后如何在不显示所有内容的情况下重新显示推断类型?
例如,我有一个包含 1000 个项目的数组 mydata
。在 F# Interactive 控制台中键入 mydata
将显示类型以及数组的内容。
Unquote 具有以下类型的扩展名 属性:
> let mydata = [|Some([42])|];;
val mydata : int list option [] = [|Some [42]|]
> mydata.GetType().FSharpName;;
val it : string = "option<list<int>>[]"
像这样使用 printfn 怎么样:
F# Interactive for F# 3.1 (Open Source Edition)
Freely distributed under the Apache 2.0 Open Source License
For help type #help;;
>
val mya : int [] = [|3; 2; 5; 6; 7; 8|]
> printfn "%A" (mya.GetType());;
System.Int32[]
val it : unit = ()
您可以使用一些实用函数来缩短所需的输入:
let pm v = printfn "%A" (v.GetType())
你可以使用如下:
> pm mya;;
System.Int32[]
val it : unit = ()
"pm"代表"print me"。随心所欲地称呼它:)
如果您不喜欢 GetType() 中的类型名称,另一种方法是让您想要评估的值出错。这将为您提供更友好的 F# 类型名称(当然,如果您不介意忽略该错误)。例如在列表中你可以这样做:
>
val myl : string list = ["one"; "two"]
> printfn myl;;
Script.fsx(195,9): error FS0001: The type 'string list' is not compatible with the type 'Printf.TextWriterFormat<'a>'
注意''
之间的类型字符串列表最后你可以使用:(MSDN)
fsi.ShowDeclarationValues <- false
但这只会让初始评估静音。