I let myVec = vec![0..25]
가지고 있고 10 그룹의 반복자에 myVec
을 분할 싶습니다반복자를 사용하여 벡터를 10 개 그룹으로 분할 할 수 있습니까?
[0,1,2,3,4,5,6,7,8,9]
[10,11,12,13,14,15,16,17,18,19]
[20,21,22,23,24,25,None,None,None,None]
가 그렇게 할 수 있나요 녹에 반복자와?
I let myVec = vec![0..25]
가지고 있고 10 그룹의 반복자에 myVec
을 분할 싶습니다반복자를 사용하여 벡터를 10 개 그룹으로 분할 할 수 있습니까?
[0,1,2,3,4,5,6,7,8,9]
[10,11,12,13,14,15,16,17,18,19]
[20,21,22,23,24,25,None,None,None,None]
가 그렇게 할 수 있나요 녹에 반복자와?
Iterator
trait에는 이러한 도우미 메서드가 없습니다. 그러나, 그것을 할 수있는 두 가지 방법이 있습니다 :
사용이 [T]::chunks()
method (직접 Vec<T>
호출 할 수있다). 그러나 작은 차이가 있습니다. 즉, None
을 생성하지 않지만 마지막 반복은 더 작은 조각을 생성합니다.
let my_vec = (0..25).collect::<Vec<_>>();
for chunk in my_vec.chunks(10) {
println!("{:02?}", chunk);
}
결과 :
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[20, 21, 22, 23, 24]
는 the crate itertools
에서 Itertools::chunks()
method를 사용합니다. 이 상자는 표준 라이브러리의 Iterator
형질을 확장합니다. 따라서이 chunks()
메서드는 모든 반복자에서 작동합니다! 사용법은 일반적으로 사용하기 위해 약간 더 복잡합니다. 이것은 위에서 설명한 방법과 동일한 동작을합니다. 마지막 반복에서 청크는 None
을 포함하는 대신에 작아집니다.
Example :
이extern crate itertools;
use itertools::Itertools;
for chunk in &(0..25).chunks(10) {
println!("{:02?}", chunk.collect::<Vec<_>>());
}
결과 : 코드에서
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[20, 21, 22, 23, 24]
도 있다는 점 유의 하시길 바랍니다님이 기대하는대로하지 않습니다! 벡터는 이고 하나는입니다. 해당 요소는 Range
입니다. 위의 예에서이 문제를 해결했습니다.
snake_case
입니다.
감사합니다. 첫 번째 솔루션은 내가 찾고 있던 솔루션이었습니다. – Teo