> let a = [| 'a'..'d' |];;
val a : char [] = [|'a'; 'b'; 'c'; 'd'|]
Do cắt tầm thường:hành vi kỳ lạ của mảng slicing
> a.[1..2], [1..2];;
val it : char [] * int list = ([|'b'; 'c'|], [1; 2])
Bây giờ thử nó với khu vực trống:
> a.[1..0], [1..0];;
val it : char [] * int list = ([||], [])
vẻ làm việc và hợp lý - chúng tôi có hai chuỗi rỗng.
Nhưng nó không thành công ở đây:
> a.[5..0];;
System.OverflowException: Arithmetic operation resulted in an overflow.
at <StartupCode$FSI_0018>[email protected]()
Stopped due to error
Tất nhiên, có một cách giải quyết [| for i in [5..0] -> a.[i] |]
. Nhưng tôi bỏ lỡ lý do tại sao a.[5..0]
không thành công? Tại sao không chỉ trả về mảng trống? Bất kỳ lý do nào cho hành vi đó?
Bạn có biết trình theo dõi lỗi "chính thức" cho F # không? – qehgt
Bạn có thể gửi báo cáo lỗi tới fsbugs (at) microsoft (dot) com. – pad