2015-11-19 27 views
1

爲什麼在函數甚至在下面的函數開始之前顯示異常是否有原因?在循環中亂序發生的f#異常

let listCharacters (text:string) = 
    let stripv3 = text.Split([|' '|], System.StringSplitOptions.RemoveEmptyEntries) |> System.String.Concat  

    for i in 0..2..stripv3.Length do 
      let char = stripv3.Chars(i) 
      if char <> ' ' then 
       printfn "%c" char 

listCharacters "honey badger is a badass" 

產生以下輸出: -

System.IndexOutOfRangeException: Index was outside the bounds of the array. 
h 
n 
y 
a 
g 
r 
s 
b 
d 
s 

有趣的是,如果我添加內按順序與出現try..with任何操作,任何想法這是爲什麼?

+4

輸出在哪裏?在VS2013/F#3.1中的FSI輸出結果與我的完全一致,即字符行之後的例外。 –

+0

FSI在VS2015,坦率地說,我只是開始研究f#,所以我很確定我的期望已經結束,但我想了解爲什麼異常不是輸出的最後一行。 –

+1

在VS2015 Enterprise中嘗試過 - 仍然如預期的那樣(FSI版本14.0.23020.0)。 –

回答

0

總結上面的註釋問題是特定於IDE而不是語言。

在這種情況下,該問題僅在Visual Studio F#Interactive視圖中出現。

當完全執行或通過Visual Studio FSI.exe運行時,異常是要輸出的最後一項。