Thread overview
Bir S Yapısında İşlev Yükleme
September 14

Bunu ilk defa görüyorum nedir bu?

import std.stdio;

struct S
{
  int i;

  int num()
  {
    return i + 1;
  }

  int num(this X)() @property
  {
    return 2;
  }
}

void main()
{
  S a; // -> 1    -> 0
  assert(a.num() > a.i);
  a.num.writeln; // 1
}

Çıkış noktam şuradaki bildirim ve biraz değiştirdim. Peki, @property ile bir ilişkisi var mı bilmiyorum ama -1 dönmesi için ne yapılır? Yani (this X)'den nasıl bir davranış beklemeliyiz?

Teşekkürler...

September 14
On 9/14/22 16:49, Salih Dincer wrote:

>    int num()
>    {
>      return i + 1;
>    }
>
>    int num(this X)() @property
>    {
>      return 2;
>    }

Evet, işlev yükleme ama bir tane normal üye işlev var, bir tane de işlev şablonu... Şunları yazmışım:


http://ddili.org/ders/d/sablonlar_ayrintili.html#ix_sablonlar_ayrintili.this,%20%C5%9Fablon%20parametresi


http://ddili.org/ders/d/katmalar.html#ix_katmalar.this,%20%C5%9Fablon%20parametresi

Ama burada garip tabii ve anlaşılan hatalıymış da... Neyse, benim bildiklerim yukarıdaki bağlantıdakiler. :)

Ali

September 15
On Thursday, 15 September 2022 at 02:13:58 UTC, Ali Çehreli wrote:
>
> Evet, işlev yükleme ama bir tane normal üye işlev var, bir tane de işlev şablonu... Şunları yazmışım:
>
http://ddili.org/ders/d/sablonlar_ayrintili.html#ix_sablonlar_ayrintili.this,%20%C5%9Fablon%20parametresi

Burayı okumamıştım gerçi az önce ilk okumada bir şey anlamadım ama anlayana kadar okumaya devam...

Başlığı açmadan önce [şuraya](http://ddili.org/ders/d/islev_yukleme.html) baktım ve bahsedilmemişti. Çünkü sayfanın sonlarında **Yapılar için işlev yükleme** yer alıyor. Belki iki sayfa arasına bağlantı verilmesi iyi olabilir.

Başarılar...



September 15
On 9/15/22 00:28, Salih Dincer wrote:
> On Thursday, 15 September 2022 at 02:13:58 UTC, Ali Çehreli wrote:

> Burayı okumamıştım gerçi az önce ilk okumada bir şey anlamadım ama
> anlayana kadar okumaya devam...

this şablon parametresi, içinde bulunduğumuz türün tam tanımının bir takma ismi oluyor. Ben de typeof(this)'ten farkını şimdi bilmediğimi farkediyorum. (?)

> Çünkü sayfanın sonlarında **Yapılar için işlev
> yükleme** yer alıyor.

this şablon parametresi ile işlev yükleme olanakları bana bağımsız geliyor.

Ali

September 15

On Thursday, 15 September 2022 at 15:18:02 UTC, Ali Çehreli wrote:

>

this şablon parametresi, içinde bulunduğumuz türün tam tanımının bir takma ismi oluyor. Ben de typeof(this)'ten farkını şimdi bilmediğimi farkediyorum. (?)

Yani hocam konuyu şöyle bir örnekle toparlayabilir miyiz:

struct S
{
  int i;
  enum hata = "bu satır işlevsiz";
  import std.traits;

  @property inc(this s)()
  {
    static if(isMutable!s)
    {
      i++;
    } else assert(0, hata);

    return i;
  }

  @property inc(this s)(int n)
  {
    static if(isMutable!s)
    {
      i += n;
    } else assert(0, hata);

    return i;
  }
}

void main()
{
  import std.stdio;

  S mu;
  mu.inc(2).writeln; // 2
  mu.inc.writeln;    // 3

  const S im;
  im.inc(2).writeln; // hata
  im.inc.writeln;    // hata
}

Teşekkürler...