F# 如何在调试器中检查函数的本地值?
如何在调试器中检查函数的本地值 我试着把我的头脑集中在咖喱和功能性构图上 在这样做时,我希望利用调试器。 但是,在使用调试器时,我无法检查add函数中“a”和“b”的值F# 如何在调试器中检查函数的本地值?,f#,F#,如何在调试器中检查函数的本地值 我试着把我的头脑集中在咖喱和功能性构图上 在这样做时,我希望利用调试器。 但是,在使用调试器时,我无法检查add函数中“a”和“b”的值 let add a b = a + b;; // set a breakpoint here let addTen = add 10;; let result = addTen 20;; 我甚至尝试使用以下方法打印值: let add a b = printfn "a equals: %a and
let add a b =
a + b;; // set a breakpoint here
let addTen = add 10;;
let result = addTen 20;;
我甚至尝试使用以下方法打印值:
let add a b =
printfn "a equals: %a and b equals: %b" a b
a + b
我做错了什么?使用
printfn的版本的问题在于占位符错误%a
是一个需要两个参数的通用格式说明符,%b
需要一个bool
尝试将函数更改为:
let inline add a b =
printfn "a equals: %A and b equals: %A" a b
a + b
现在,当应用所有参数时,它将打印“调试”文本:
> let addTen = add 10;;
val addTen : (int -> int)
> let result = addTen 20;;
a equals: 10 and b equals: 20
val result : int = 30
如果这是一个脚本文件,您就不能轻松调试F#脚本:目前它是一个FS文件。所以我可以把逻辑放到脚本文件中,然后使用调试器检查函数中的本地值?我很好奇为什么在标准FS文件中不能有这种行为?谢谢Mark。“内联”提供了什么价值?是的,我在询问之前查看了它,只能得出性能。我不确定使用内联是否有效。@ScottNimrod尝试删除inline
关键字。如果这样做,编译器将默认解释函数类型,使其仅在int
上工作。使用inline
,它可以与定义了+
的任何类型一起工作。