Merhaba,
Bu sabah, şu başlıkta yetenekli chunks() ile tanıştım. Eğer kendisine dizi verirseniz, parçalı aralığa veya isteğe bağlı ve kolayca diziye çevirebilirsiniz. Üstelik sadece dizi değil aralık da alıyor!
Peki ne yapıyor?
İlk parametre olarak ister aralık (rangeNum) verin isterseniz dizi (arrayNum), verdiğiniz ikinci parametreye göre (bu değer, parça adeti değil her parçanın max. uzunluğu) bölüyor:
import std;
void main() {
auto arrayNum = 1.iota(10).array;
typeid(arrayNum).writeln(": ", arrayNum);
//int[]: [1, 2, 3, 4, 5, 6, 7, 8, 9]
auto phoneKeys = arrayNum.chunks(3).array;
phoneKeys.writefln!"%(%s\n%)";
"[*, 0, #]".writeln; // EVET, KOLAYA KAÇTIM :)
// #2
auto rangeNum = 1.iota(10);
typeid(rangeNum).writeln(": ", rangeNum);
//std.range.iota!(int, int).iota.Result: [1, 2, 3, 4, 5, 6, 7, 8, 9]
phoneKeys = rangeNum.chunks(3).map!array.array;
phoneKeys.writefln!"%(%s\n%)";
"[*, 0, #]".writeln; // EVET, KOLAYA KAÇTIM :)
}/* ÇIKTISI:
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
[*, 0, #]
*/
Farketmişsinizdir, örneğin 2. bölümünde aralık verdiğimiz için devamını map'lemeden diziye çeviremiyoruz! Ama bu sefer veriyi işlemek adına daha çok olanağa sahip olabiliriz.
Kolay gelsin...