2015-12-09 35 views
0

如何在調試器中檢查函數的本地值?如何在調試器中檢查函數的本地值?

我試圖圍繞柯里和功能組成我的頭。

這樣做,我想利用調試器。 但是,在使用調試器時,我無法檢查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 b equals: %b" a b 
    a + b 

我在做什麼錯?

+0

如果這是一個腳本文件,你可以不容易調試F#腳本:http://stackoverflow.com/a/9081371/126014 –

+0

目前它是一個FS文件。所以我可以將邏輯放入一個腳本文件並使用調試器來檢查函數中的局部值?我很好奇爲什麼我不能在標準的FS文件中出現這種行爲? –

回答

2

使用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 
+0

謝謝馬克。 「內聯」提供了什麼價值? –

+0

@ScottNimrod https://msdn.microsoft.com/en-us/library/dd548047.aspx –

+0

是的,我問之前看了它,只能拿出性能。我不確定使用內聯是否顯着。 –

0

您尚未執行此處的功能。只是使用了一些包裹周圍想到是這樣的:

let add a b = 
     a + b;; // set a breakpoint here 

let addTen = add 10;; 
let result = addTen 20;; 

加10 ;;

,就像是僞代碼,現在有:

let myNewfunction = 
    let c = 10 
    let newAdd d= c + d 
    newAdd 

您還沒有通過你的第一個功能變得只是設置爲10

希望,使它成爲一個情境包裹它的另一個函數內更清晰

相關問題