abi bunu mail listesine gondersen, kullansa zavalli adamlar, negzel olur. :)
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]
| Thread overview | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
November 23, 2010 Giriş işlemleri için ddio.d | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | abi bunu mail listesine gondersen, kullansa zavalli adamlar, negzel olur. :) -- | |||
November 23, 2010 Giriş işlemleri için ddio.d | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Mengu | Alıntı: >Ne dersiniz? ddio.d dosyasını D.ershane'nin girişten bilgi okumayla ilgili olan dersine koysam ve okuyanlardan onu ddio.d ismiyle kardetmelerini istesem? Ek olarak, programlarını oluştururken onu da eklemeleri gerektiğini söylesem: Bence bu projeyi ortalarda bir derste anlatın ve readf yerine bunuda kullanabilirsiniz deyin. İsteyen istediğini kullanır. Alıntı: >abi bunu mail listesine gondersen, kullansa zavalli adamlar, negzel olur. :) Tamamen katılıyorum. Kodlara daha bakmadım ama bence bunu bir projeye haline getirin. Biraz daha süsler hatalarından arındırırız ve projeyi duyururuz. Ancak sanırım en azından işlev adlarını ingilizce haline getrimek gerekir. alias ile takma ad takarak bunu halledebiliriz? -- | |||
November 23, 2010 Giriş işlemleri için ddio.d | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Alıntı: >Aslında isteğe bağlı bir durum değil. Ben bir kaç ay önce derslerden din ve dout'u çıkartmaya başlamıştım ve yerlerine readf vs. yerleştiriyordum. Ben cstream'i olduğu gibi bırakalım ve bu projeyi tanıtalım demiştim. Her türlü olabilir bence. Ama dilin kütüphanesinde giriş işlevinin bu kadar zorlamasını sevmeyenlerde olacaktır. Alıntı: >Kullanış açısından, dört işlevin adını değiştirmek yeter ama bence bütün kodun İngilizce olması gerek. Herkes kodu görmek isteyecektir; yoksa açık kod sayılmaz. :) Hem okuyabilseler daha güzel öneriler de gelir. Bencede tamamen doğru. Bu arada
Bence mesajdan sonra kendisinin otomatik boşluk koyması doğru değil.
Sanki string olarak belirtilmesede write gibi her türlü değeri gösterebilse. Hemde çokuzlu olarak. Kodları çalıştırmadım ancak
gerekli mi ? Onun yerine asıl işlev
olabilir mi? Hmm o zaman string yerine şablon kullanırsak sorun yaşayabiliriz. -- | |||
November 22, 2010 Giriş işlemleri için ddio.d | ||||
|---|---|---|---|---|
| ||||
Standart girişten okumayla ilgili bazı sorunlar olduğunu biliyoruz. Emekliye ayrılacak olan din ve dout'u D.ershane'deki derslerden kaldırmadan önce stdin'in hatasız olarak kullanılabilmesini bekliyordum. Öyle beklemek yerine, kendim 'oku' isminde dört işlev yazdım. Kısa örnekler:
readf gibi becerikli değiller ama sanırım doğru işliyorlar. Ayrıca, hatalı girişlerde hangi değer aralığının doğru olduğunu da bildiriyorlar. Örnek: 'ubyte türünde bir değer giriniz: -33 Dosyanın ismini, "standard input output"un benzeri olan "ddili input output"a benzeterek ve fazla düşünmeden ddio.d yaptım:
Görüldüğü gibi eksikleri var: Birim testleri henüz çok eksik, işlev açıklamaları çok boş; bunları geliştireceğim. Modülü denemek için küçük bir program da yazdım:
Ne dersiniz? ddio.d dosyasını D.ershane'nin girişten bilgi okumayla ilgili olan dersine koysam ve okuyanlardan onu ddio.d ismiyle kardetmelerini istesem? Ek olarak, programlarını oluştururken onu da eklemeleri gerektiğini söylesem: 'dmd deneme.d ddio.d -w' Böylece din ve dout'u derslerden çıkartabilirim. Örnek programlar içinde de basitçe 'oku' diyerek girişten bilgi okuyabiliriz. Ali -- | ||||
November 23, 2010 Giriş işlemleri için ddio.d | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Can Alpay Çiftçi (canalpay) | Alıntı (canalpay): >Bence bu projeyi ortalarda bir derste anlatın ve readf yerine bunuda kullanabilirsiniz deyin. İsteyen istediğini kullanır. Aslında isteğe bağlı bir durum değil. Ben bir kaç ay önce derslerden din ve dout'u çıkartmaya başlamıştım ve yerlerine readf vs. yerleştiriyordum. İlk bir kaç derste başarılı oldum ama hemen bir derste "girişten bilgi okuma" işini kolayca halledemedim. :( Bence tam da o derste "bu konuda bir eksiklik var; o yüzden, bilmediğiniz kodlar içeriyor olsa da, şu dosyayı kaydedin, import edin, ve derleme satırına ekleyin" demek gerek. Alıntı: >ingilizce haline getrimek gerekir. alias ile takma ad takarak bunu halledebiliriz? Kullanış açısından, dört işlevin adını değiştirmek yeter ama bence bütün kodun İngilizce olması gerek. Herkes kodu görmek isteyecektir; yoksa açık kod sayılmaz. :) Hem okuyabilseler daha güzel öneriler de gelir. Ali -- | |||
November 23, 2010 Giriş işlemleri için ddio.d | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Can Alpay Çiftçi (canalpay) | Alıntı (canalpay): >Ben cstream'i olduğu gibi bırakalım ve bu projeyi tanıtalım demiştim. Tamamdır. Zaten cstream'i teker teker çıkartmaya başlamıştım. Alıntı: >Ama dilin kütüphanesinde giriş işlevinin bu kadar zorlamasını sevmeyenlerde olacaktır. Durumu yumuşak bir dille anlatırız. :) Aslında bu olay bizim dışımızda büyük bir sorun da değil galiba; zaten öyle olsaydı başkaları da şikayet ederdi. Standart girişten kullanıcıyla etkileşmek çok yaygın değil aslında. Hmmm. Acaba ben de daha çok komut satırı parametrelerine mi odaklansaymışım... Alıntı: >
> T oku(T)(string mesaj)
> Sanki string olarak belirtilmesede write gibi her türlü değeri gösterebilse. Hemde çokuzlu olarak. O konuyu ben de düşündüm. Aslında elimizde zaten format gibi bir araç bulunduğu araç için her işlevin çokuzlu (tuple) desteklemesi gerekmemiş olur. Ama eğer derslerin başında format kullanımını ortadan kaldıracaksa neden olmasın. Hatta sanırım bütün iş, çokuzluyu olduğu gibi format'a vermek oluyordu. (Unutmuşum! :) ) Alıntı: >
static string boşMesaj;
> T oku(T)(string mesaj="")
> olabilir mi? Hmm o zaman string yerine şablon kullanırsak sorun yaşayabiliriz. Haklısın! :) O işlevi bütünüyle kaldırmış oldum. Böylece işlevler üçe indi:
Aynı numarayı son ikisi için yapamıyoruz çünkü varsayılan değeri olan parametrelerin listenin sonunda olmaları gerekir, be bana mesajı sona koymak daha mantıksız geliyor:
Olabilir de ama bence önceki sırası daha iyi. Ali -- | |||
November 23, 2010 Giriş işlemleri için ddio.d | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Son hali:
Ali -- | |||
November 24, 2010 Giriş işlemleri için ddio.d | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Peki diziler ve eşleme tabloları ne olacak? :) Şu satır, bir derleme hatasına neden oluyor:
Çünkü 'T dönüştür(T)(string satır)' şablonu içinde dizilere özel bir 'static if' bulunmuyor ve onlar için de 'else' kapsamı seçiliyor. 'else''in içindeki 'parse!T(satır)' ifadesi de dizilerle kullanılamadığı için derleme hatası oluşuyor. (Not: Aslında dizgiler de dizidir tabii ama onları özel olarak hallediyoruz.) Şimdi amaç kodu geliştirmek ve dizi ve eşleme tablosu okumayı da desteklemek. Önce dinamik dizilerden başlayalım; sabit uzunluklu dizileri ve eşleme tablolarını sonraya bırakalım. Derleme hatasını giderebilmek için şöyle iki değişiklik yapabiliriz:
(Not: Sabit uzunluklu diziler için isStaticArray, eşleme tabloları için de isAssociativeArray kullanılır.)
Şimdi, örneğin şöyle deneyebiliriz:
Çıktısı: '$ ./deneme Gördüğünüz gibi, ne girilirse girilsin, üç 42'den oluşan bir dizi döndürüyor. Bu konuyla uğraşmak ister misiniz? Sanırım yine 'conv.parse' kullanılabilir. Belgesindeki örnekte, bir satırdan nasıl birden fazla veri çekilebildiği görülüyor: http://digitalmars.com/d/2.0/phobos/std_conv.html#parse Alıntı: >
| |||
November 27, 2010 Giriş işlemleri için ddio.d | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Bu arada bence ddio için bir çıkış işlevi yazmalıyız. http://d.puremagic.com/issues/buglist.cgi?query_format=specific&order=relevance+desc&bug_status=__open__&product=&content=write Örneğin bağlantıdaki önemli hataları çok profesyonelce olmadanda olsa yamalamalıyız. Daha sonra okuma işlevini yamalarız. Bu oku'nun yanında yaz adında yeni bir işlev gerekiyor demek :-) Bu arada çok güzel oldu. Acaba dosya yazma/okuma ile ilgili işlevlerde eklenmeli mi? -- | |||
November 27, 2010 Giriş işlemleri için ddio.d | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Can Alpay Çiftçi (canalpay) | Alıntı (canalpay): >Bu arada bence ddio için bir çıkış işlevi yazmalıyız. Ben bunu D.ershane kapsamında tutmaktan yanayım. Derslerdeki örnekleri sıkıntıya sokacak bir kısıtlamayla karşılaşırsak düzeltiriz. Alıntı: >Acaba dosya yazma/okuma ile ilgili işlevlerde eklenmeli mi? Buradaki işlevleri standart girişe bağlayan tek şey, 'stdin.readln()' çağrısı. (Aslında bir de, eğer hatalı bir duruma girmişse giriş akımını o durumdan çıkartmaya yarayan, ama olasılıkla gereksiz olan 'stdin.clearerr()'.) Eğer bu işlevlere giriş akımını da belirtebilsek, bu iş tamam olur. Çünkü readln aslında File türünün bir üye işlevi. Eğer File türündeki dosyayı zaten açmışsak:
dosya'nın oku'ya bir şekilde verilmesi gerekir: örneğin işlev parametresi olabilir. Veya; dosyayı barındıran bir nesne olabilir; oku, onun bir üye işlevi olur:
Ama başka bir konuyu da düşünmek gerek: Mesajın stdout'a yazılıyor olmasına bakarsak, burada kullanıcıyla bir etkileşim söz konusu. Yani amaç, bir insanla etkileşmek. stdout'a yazıp sonra dosyadan okumak garip olur. Öte yandan, mesaj yazdırmayan yüklemelerini kullanırsak öyle bir gariplik de kalmaz tabii. :) Ali -- | |||