| |
|
Ali Çehreli (acehreli) 
| Alıntı (zekeriyadurmus):
> String gibi ubyte[] gibi dizilerin (dilim demek biraz tuhaf geliyor)
Duruma göre ben ikisini de söyleyebiliyorum. D'de dilimin farkını öne çıkartmak için özellikle bastırıyorum. :)
Alıntı:
> hangi adrese kurulacağını seçemiyoruz değil mi?
Bunun için C'nin stdlib'inden yararlanılır:
import std.c.stdlib;
void main()
{
int * p = cast(int*)malloc(42 * int.sizeof);
scope(exit) free(p);
// Artık elimde 42 elemanlı bir C dizisi var. (Bu diziler ne yazık ki
// kendi uzunluklarını bilemez.)
foreach (i; 0 .. 42) {
p[i] = i;
}
// D'nin güzel bir olanağı, p gibi çiğ dizilerden bile dilim
// oluşturabilmesidir:
auto d = p[0..42];
// Türü, int dilimi
static assert(is (typeof(d) == int[]));
// Bu dilim p'deki elemanları gösterir:
assert(d.ptr == p);
// Tabii, dilime eleman ekleyince p'yi terkedeceğine dikkat etmek gerek:
foreach (i; 0 .. 100) {
d ~= i;
}
assert(d.ptr != p); // yeni elemanlar sığsın diye d'ye yeni yer ayrılmıştır
}
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]
|