Jump to page: 1 24  
Page
Thread overview
Gruplama düzen belirteçleri %( ve %)
Oct 10, 2012
mert
Oct 10, 2012
Salih Dinçer
Oct 10, 2012
Salih Dinçer
Oct 10, 2012
Salih Dinçer
Oct 10, 2012
Salih Dinçer
Oct 23, 2012
Salih Dinçer
Oct 23, 2012
Salih Dinçer
Oct 23, 2012
Salih Dinçer
Oct 23, 2012
Salih Dinçer
Mar 09, 2013
Salih Dinçer
Mar 10, 2013
Salih Dinçer
Mar 10, 2013
Salih Dinçer
Mar 10, 2013
Salih Dinçer
Mar 11, 2013
Salih Dinçer
Mar 11, 2013
Salih Dinçer
Mar 11, 2013
Salih Dinçer
Mar 11, 2013
Salih Dinçer
Mar 12, 2013
Salih Dinçer
Mar 12, 2013
Salih Dinçer
October 10, 2012

Alıntı:

>

http://dlang.org/phobos/std_format.html

Belirteçleri dün inceledim daha bir kaç örnek ile de değerlendirdim. Kitaba girecek mi?

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

October 10, 2012

Bu yöntemle 'enum'ları da yazdırabilseydik hoş olurdu. Şöyle bile hata verdi:

 enum günler { Pazartesi, Salı, Çarşamba, Perşembe, Cuma, Cumartesi, Pazar };
 foreach(gün; 0..günler.Pazar) writefln("{%(%s, %)}", cast(günler)gün);

Ayrıca tirenin hiç bir farkını göremedim. Bende (2.059) hep tırnaklı çıkardı...

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

October 10, 2012

Eh biraz uğraştırıyor ama 'enum'ları geleneksel şekilde çıktı almak mümkünmüş:

void main(){
   enum günler { Pazartesi, Salı, Çarşamba, Perşembe, Cuma, Cumartesi, Pazar };

   write("{ ");
   foreach(gün; 0..günler.max) writef("%s, ", cast(günler)gün);
   günler.max.writeln(" }");.writeln(" }");

}/*Çıktısı:
{ Pazartesi, Salı, Çarşamba, Perşembe, Cuma, Cumartesi, Pazar }
*/

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

October 10, 2012

Burdan yola çıkarak, bu özelliği pekala enum ve diğer türler için eklemeleri mümkün. Çünkü şöyle bir işlev (function) iş görüyor:

void enumPrint(T)(T x) {
   write("{ ");
   foreach(i; T.min..T.max) writef("%s, ", i);
   T.max.writeln(" }");
}
/* Usage:
enum numbers { one, two, three }
numbers test;
enumPrint(test);
*/

Artık başka bir yolu yoksa Ali hocam bizim için elçi olursa sevinirim. Belki 2.061'e eklerler...:)

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

October 10, 2012

Konuyla alakasız ama hep istediğim (hatta Ali hoca hatırlar, bir ara var olduğunu zannetmiştim...:)) ama nedense böyle faydalı bir özelliği olmadığı şu olayı DMD'ye yedirseler ne güzel olurdu:

import std.stdio;

   T roundInc(T)(T x) {
       if(x == T.max) return T.min;
       return ++x;
   }

void main(){
   enum numbers { one, two, three }
   auto test = numbers.three;

   test.writeln("<--normal printed");
   test.roundInc.writeln("<--was directed");

}/* Print Out:
three<--normal printed
one<--was directed
*/

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

October 10, 2012

Phobos'a yakın zaman önce eklenen ve henüz kitapta yer almayan %( %) belirteçleri var. Bir grup elemanı yazdırırken kolaylık sağlıyor. Nasıl kullanıldığını anlamak için önce kendi bildiğimiz gibi yazdıralım.

Amaç, günleri aralarında virgül (ve boşluk) olacak biçimde yazdırmak. Hepsini de küme parantezleri arasında istiyoruz. Ve tabii günlerin başında veya sonunda başı boş virgül olmasın:

import std.stdio;
import std.array;

void main()
{
   auto günler = [ "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma",
                   "Cumartesi", "Pazar" ];

   auto dilim = günler;

   write("{");

   if (!dilim.empty) {
       // İlk günden önce ", " yazdırmayacağız
       write(dilim.front);
       dilim.popFront;

       foreach (gün; dilim) {
           writef(", %s", gün);
       }
   }

   writeln("}");
}

Çıktısı:

'{Pazartesi, Salı, Çarşamba, Perşembe, Cuma, Cumartesi, Pazar}'

Şimdi aynı programı %( ve %) belirteçleri ile yazdıracağım:

import std.stdio;

void main()
{
   auto günler = [ "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma",
                   "Cumartesi", "Pazar" ];

   writefln("{%-(%s, %)}", günler);
}

Çıktısı aynı! :D

Oradaki tire karakterini şimdilik bir kenara bırakırsanız, şöyle çalışıyor: Düzen dizgisinin %( ve %) belirteçleri arasındaki parçası parametre olarak verilen topluluğun bütün elemanlarına ayrı ayrı uygulanıyor.

Yani, "%s, " düzen dizgisi günler'in içindeki her gün için ayrı ayrı kullanılıyor. %s'ten sonra gelen bölüm, yani ", " ayraç olarak algılanıyor. Hem de, önceki programda yaptığımız gibi akıllı bir biçimde: O ayraç sonuncu elemana uygulanmıyor! :)

Tire kullanılmadığında dizgiler ve karakterler tırnaklar içinde yazdırılıyor. Onun için ben tire kullanmayı seçtim.

Bir nokta daha var: %s'ten sonra gelen karakterlerin (yani ", " karakterlerinin) hepsinin birden otomatik olarak ayraç kabul edilmeleri istenmediğinde ayracın nerede başladığı %| belirteci ile bildiriliyor.

Bunun örnekleri std.format belgesinde var:

http://dlang.org/phobos/std_format.html

Ali

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

October 10, 2012

Alıntı (Salih Dinçer):

>

'enum'ları geleneksel şekilde çıktı almak mümkünmüş

Bu yöntemden ve EnumMembers'dan yararlanınca daha da kolay. EnumMembers'ın nasıl dizi içine yazıldığına dikkat edin; bunu bilmiyordum:

import std.stdio;
import std.traits;

void main()
{
   enum Günler { Pazartesi, Salı, Çarşamba, Perşembe, Cuma, Cumartesi, Pazar }
   writefln("{ %(%s, %) }", [ EnumMembers!Günler ]);
}

Ali

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

October 10, 2012

Alıntı (Salih Dinçer):

>

tirenin hiç bir farkını göremedim. Bende (2.059) hep tırnaklı çıkardı...

2.060 ile şöyle oluyor:

import std.stdio;

void main()
{
   auto dizi = [ "merhaba", "dünya" ];
   writefln("%(%s %)", dizi);
   writefln("%-(%s %)", dizi);
}

Çıktısı:

'"merhaba" "dünya"
merhaba dünya
'

Ali

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

October 23, 2012

Alıntı (acehreli:1349891236):

>

Bu yöntemden ve EnumMembers'dan yararlanınca daha da kolay...

> enum Günler { Pazartesi, Salı, Çarşamba, Perşembe, Cuma, Cumartesi, Pazar }
> auto çokuz = EnumMembers!Günler;
> ```

>
Bu da iyimiş ama şu çokuzlara henüz alışamadım. Sıra onlarda galiba...:)

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

Şimdi şöyle denedim...

   enum Günler { Pazartesi, Salı, Çarşamba, Perşembe, Cuma, Cumartesi, Pazar }
   auto dizi = [ EnumMembers!Günler ];
   dizi.writeln("\n^---", typeid(dizi));

Çıktısı:
'[Pazartesi, Salı, Çarşamba, Perşembe, Cuma, Cumartesi, Pazar]
^---enumlar.main.Günler[]
'
Bu bir şablon zannedersem? Ancak dizi olarak döndürülebilmesi D'nin çokuzlar ile ilgili başka bir özelliği olsa gerek. Hoş...:)

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

« First   ‹ Prev
1 2 3 4