Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit2f5d047

Browse files
PatrickMcDonaldlatkin
authored andcommitted
Array.chunkBySize does not return final chunk in some cases
An example case is Array.chunkBySize 3 [|1..4|], the code calculates thenumber of chunks to be 2, and then does not copy the final (partial) chunkas 4 mod 2 is 0. Similarly for Array.chunkBySize 5 [|1..12|], number ofchunks is 3 and 12 % 3 = 0Changing check to len % chunkSize fixes this.Fixesdotnet#501Closesdotnet#503
1 parentd02a425 commit2f5d047

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

‎src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/ArrayModule.fs‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,8 @@ type ArrayModule() =
151151
Assert.IsTrue([|[|1..4|];[|5..8|]|]= Array.chunkBySize4[|1..8|])
152152
Assert.IsTrue([|[|1..4|];[|5..8|];[|9..10|]|]= Array.chunkBySize4[|1..10|])
153153
Assert.IsTrue([|[|1|];[|2|];[|3|];[|4|]|]= Array.chunkBySize1[|1..4|])
154+
Assert.IsTrue([|[|1..3|];[|4|]|]= Array.chunkBySize3[|1..4|])
155+
Assert.IsTrue([|[|1..5|];[|6..10|];[|11..12|]|]= Array.chunkBySize5[|1..12|])
154156

155157
// string Seq
156158
Assert.IsTrue([|[|"a";"b"|];[|"c";"d"|];[|"e"|]|]= Array.chunkBySize2[|"a";"b";"c";"d";"e"|])

‎src/fsharp/FSharp.Core/array.fs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,7 @@ namespace Microsoft.FSharp.Collections
584584
letres= Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked chunkCount: 'T[][]
585585
for i=0to len/ chunkSize-1do
586586
res.[i]<- Microsoft.FSharp.Primitives.Basics.Array.subUnchecked(i* chunkSize) chunkSize array
587-
if len%chunkCount<>0then
587+
if len%chunkSize<>0then
588588
res.[chunkCount-1]<- Microsoft.FSharp.Primitives.Basics.Array.subUnchecked((chunkCount-1)* chunkSize)(len% chunkSize) array
589589
res
590590

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp