Jump to page: 1 2
Thread overview
const == in ile ref == out
Oct 19, 2012
Salih Dinçer
Oct 19, 2012
Salih Dinçer
Oct 19, 2012
Salih Dinçer
Oct 19, 2012
Salih Dinçer
Oct 19, 2012
mert
Oct 19, 2012
mert
Oct 19, 2012
Salih Dinçer
Oct 19, 2012
mert
Oct 19, 2012
Salih Dinçer
Oct 19, 2012
mert
Oct 19, 2012
Salih Dinçer
Oct 20, 2012
mert
October 19, 2012

Merhaba,

Çok fazla abartmak ve uzun uzadıya anlatıp kafaları karıştırmak istemiyorum. Eğer assembly dosyalarında bir şeyleri karıştırmadıysam; en azından DMD 2.059 için şu doğrudur:

  • const == in,
  • ref == out

Bunun doğru olduğunu, üretilen kodları inceleyip bir fark göremeyince md5sum ile farklı olup olmadıklarını kontrol etmem neticesinde öğrendim. Belki de bu bilenen bir şeydi ama ben yeni fark ediyorum...:)

Başarılar...

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

October 19, 2012

Diğer konuyu çok dağıtmamak için buradan devam ederek sormalıyım:
Alıntı (acehreli):

>

Alıntı (Salih Dinçer):

>

in ile const arasında hiç bir fark yok!

Aslında var ama derleyiciler scope'u henüz desteklemiyor: in, 'const scope'un eşdeğeri. Yani hem değiştirilemez (const), hem de işlevden dışarıya kaçırılamaz (scope).

Alıntı:

>

kullanmadığımız zaman parametre değişkenlerine bellekte farklı bir şekilde yer ayrılıyor

Orası derleyicinin bileceği iş. :) Tabii biz bu belirteçlere anlamsal açıdan yaklaşmalıyız.

Ali

Değişken değerinin, işlevden dışarıya kaçırılamaması (scope) olayını açabilir miyiz? Yani şu örnekte ilk parametreye sadece scope belirteçini verebilseydik, değiştirilebilir fakat geri döndürülemez demek mi?

int func(scope int foo, in int bar) {
 foo += bar;
 return foo;
}

Denedim de verebilyoruz ve derleme hatası (const scope'da da) vermiyor. Ama bir işe de yaramıyor...:)

Ancak şu hatadan anlayacağınız üzere ref ve out ile kullanılamıyor:
Alıntı:

>

scope cannot be ref or out

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

October 19, 2012

Alıntı (acehreli):

>
  • out, parametrenin değerini otomatik olarak ilkler
    Evet, öyleymiş...:)

Aşağıdaki örnekten bunu anlayabiliyoruz. Çünkü sonuç 8 yerine 5 çıkıyor. Ayrıca out yerine ref kullanılırsa ve gizli satır açılırsa yine 5 sonucu çıkıyor. Yine de md5sum'un gözünden nasıl kaçtı anlayamadım.

int func(out int foo, int bar) {
 //scope(exit) foo = 0;
 return foo + bar;
}

void main() {
   int a = 3;
   int b = 5;
   writefln("%d + %d = %d", a, b, func(a, b));
}

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

October 19, 2012

Alıntı:

>

Ama şöyle bir not var: Bu bölüm yazıldığı sırada kullanılan dmd 2.058 bu anahtar sözcüğü desteklemiyordu.

Ali

Bu arada 2.059'da desteklemiyor çünkü derleme hatası vermiyor. Bir ara 2.060'da denemek lazım...

Son olarak ref ile const arasında md5sum yapmamışım, emin olmadan yazmışım kusura bakmayın. Ama in ve const arasında temelde fark yok...

Sanırım D programcısı için in belirteçi daha makbul gözüküyor...:)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

October 19, 2012

Çok verimli bir tartışma olmuş yine. Öğrendiklerimizi pekiştirmeye yarayan bu tür tartışmaları yararlı buluyorum.
Alıntı:

>

Salih:
Bu arada 2.059'da desteklemiyor çünkü derleme hatası vermiyor. Bir ara 2.060'da denemek lazım...

Salih bu gece aramıza yeni katılacak olan kardeşimize aldığımız ultrabook üzerine 2.060 kuracağım.
İşlemleri bittiğinde denemeler yapabilirim.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

October 19, 2012

Alıntı:

>

Salih:
Son olarak ref ile const arasında md5sum yapmamışım, emin olmadan yazmışım kusura bakmayın. Ama in ve const arasında temelde fark yok..

Şu an için 'Temelde fark yok' tespiti anlaşılabilir görünse de ileride in'in scope'u da içereceğini ve bunun arkasına da başka olanaklar gelebileceğini ihtimal görmek gerek.
const belirteci uygun şartlarda değişirlerle ve değişmezlerle farklı etkileşebilirken, in belirtecinin böyle bir bağımsızlığı sanıyorum bulunmuyor. Yine bu noktada tasarım gereklerimiz belirleyici oluyor gibime geliyor.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

October 19, 2012

Alıntı (mert):

>

Salih bu gece aramıza yeni katılacak olan kardeşimize aldığımız ultrabook üzerine 2.060 kuracağım.
İşlemleri bittiğinde denemeler yapabilirim.

Sevinirim, kendisine ve kardeş memleketimize selamlar...:)

Aslında benim bir part'da (bölümleme tablosunda) DMD'nin tüm sürümleri ve Windows var. Bir de Sublime Text editöründe hepsi tanımlanmış ve diyez işareti ile aç/kapa yapıyorum. Ama o sistemi pek kullanmıyorum. Çoğunlukla Linux ve DMD 2.059...

Henüz 2.060'a ısınamadım, sanki tatsız şeyler var ama ispatlayamam. O yüzden daha kararlı olduğunu düşündüğüm 2.059 ile devam ediyorum. Sanırım 2.061'e çok yaklaştık ve belki de bu yılın son sürümü olacak. Ne dersiniz?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

October 19, 2012

Alıntı:

>

Salih:
Henüz 2.060'a ısınamadım, sanki tatsız şeyler var ama ispatlayamam. O yüzden daha kararlı olduğunu düşündüğüm 2.059 ile devam ediyorum. Sanırım 2.061'e çok yaklaştık ve belki de bu yılın son sürümü olacak. Ne dersiniz?

Açıkçası kendi ana makinemde 2.059'u değiştirmek istemedim. Biraz daha zaman geçsin üstünden diye düşünüyorum. Şu sürüm işlerinin sanki hep bir sürüm arkasından gitmek bana daha cazip geliyor. Ubuntu'da yaşadığım sıkıntılardan sonra...

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

October 19, 2012

Alıntı (mert):

>

Alıntı:

>

Salih:
Henüz 2.060'a ısınamadım, sanki tatsız şeyler var ama ispatlayamam. O yüzden daha kararlı olduğunu düşündüğüm 2.059 ile devam ediyorum. Sanırım 2.061'e çok yaklaştık ve belki de bu yılın son sürümü olacak. Ne dersiniz?

Açıkçası kendi ana makinemde 2.059'u değiştirmek istemedim. Biraz daha zaman geçsin üstünden diye düşünüyorum. Şu sürüm işlerinin sanki hep bir sürüm arkasından gitmek bana daha cazip geliyor. Ubuntu'da yaşadığım sıkıntılardan sonra...

Gerçi mantık olarak 2.061 çıktığında biz 2.060'ı kullanıyorsak şu an da kullanmak gerekiyor çünkü değişen bir şey olmayacak; bunlar release olmuş sürümler. Oysa bir çok yazılım release olmadan evvel Alpha ve Beta sürümleri ile denenebiliyor. Gecelik (nightly) olanlar bile var...:)

Bence bir geriden takip etmek yerine, yeni sürüm çıktığında biraz kullanıp geçip geçmeme karar vermek daha mantıklı...

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

October 19, 2012

Alıntı:

>

Salih:
Bence bir geriden takip etmek yerine, yeni sürüm çıktığında biraz kullanıp geçip geçmeme karar vermek daha mantıklı..

Haklısın. Ancak bunu D ile kod ürettiğim ana makinamda yapamam. Ondaki süreklilik belli durumlarda kesintiye uğratılabilir. Ancak ikinci belki üçüncü makinamda bu aşama yürüyebilir. Bunlarda sürüm denenir ancak sonrasında ve uygun bir zamanda ana makina terfi ettirilirse bu olabilir. Bunun olabilmesi içinde benim emektar 'çespır' ımı devreye sokmam gerekir. Onun içinde yeni bir masa, yeni bir masa için yeni kaynaklar, yeni kaynaklar için daha fazla kod üretmek...
Aaa sonsuz döngüye girmişim :-)))

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

« First   ‹ Prev
1 2