March 02

Merhaba,

Yakında D2'nin 107 numaralı güncellemesi yapılmıştı ve bugün güncellemenin güncellemesi ile sürüm oturdu. Yapılan güncellemeler şurada ve benim en çok dikkatimi çeken de aşağıda:

import std.stdio;

void main()
{

  enum p1 = 131071; // bir asal sayı
  enum p2 = 524287; // başka bir asal sayı

  foreach(p; [p1, p2, p1*p2])
  {
    auto baytlar = [p]; // eskiden bu olmuyordu!

    write("[ ");

    foreach_reverse(b; cast(ubyte[])baytlar)
    {
      b.writef!"%08b ";
    }
    writeln("]");
  }

} /* ÇIKTISI:
[ 00000000 00000001 11111111 11111111 ]
[ 00000000 00000111 11111111 11111111 ]
[ 11111111 11110110 00000000 00000001 ]
*/

Bu kodun neden çalışması gerektiği zaten çok önceden (2016'dan beri) tartışılmıştı:

https://issues.dlang.org/show_bug.cgi?id=16357

Bence güzel, sevgiler.

Dinçer

March 02

On Saturday, 2 March 2024 at 02:19:30 UTC, Salih Dincer wrote:

>

https://dlang.org/changelog/2.107.0.html

Sanırım denediğim kodu yayınlamakta acele ettim. Hata hakkında şöyle bir ifade var:

>

cast(T[])[x] casts x to T instead of [x] to T[]

Bu yukardaki hata ile ilgili yapılan açıklama sizce ne demek? Biraz düşenelim çünkü koddaki baytlar değişkenini iptal edip onun yerine ilk döngü şöyle yazın:

>

foreach_reverse(b; cast(ubyte[])[p])

Yine bahsedildiği gibi tek üyeli bir dizi oluşuyor!

SDB@79