Forum: Ders Arası RSS
pipe komutu nedir?
zafer #1
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: pipe komutu nedir?
http://dlang.org/phobos/std_functional.html#.pipe bu adresteki pipe komutu nedir ve nasıl kullanılır? Şöyle bir koda denk geldim ve çözmeye çalışıyorum.

// Get your local weather report
//pragma(lib, "curl");
import std.functional;
import std.json;
import std.net.curl;
import std.stdio;
import std.string;
 
alias getJSON = pipe!(get, parseJSON);
auto K2C = (float f) => f - 273.15;
auto K2F = (float f) => f / 5 * 9 - 459.67;
 
void main()
{
    auto loc = getJSON("ipinfo.io/")["loc"].str.split(",");
 
    auto resp = getJSON("api.openweathermap.org/data/2.5/weather" ~
        "?lat=" ~ loc[0] ~ "&lon=" ~ loc[1]);
 
    auto city = resp["name"].str;
    auto country = resp["sys"]["country"].str;
    auto desc = resp["weather"][0]["description"].str;
    auto temp = resp["main"]["temp"].floating;
 
    writefln(`
        +-----------------------------------------+
        |%s|
        +-----------------------------------------+
        |  weather      |  %-23s|
        +-----------------------------------------+
        |  temperature  |  %.2f°C (%.2f°F)      |
        +-----------------------------------------+
        `.outdent,
        centerJustifier(city ~ ", " ~ country, 41),
        desc, temp.K2C, temp.K2F);
}
https://github.com/zafer06 - depo
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
pipe, Unix kabuklarından tanıdığımız | karakterinin işlevlerle kullanılan eşdeğeri. Kabukta kullandığımızda solundaki programın çıktısını sağındakinin girişine bağlar:

find | grep aradigim_dosya

pipe() işlevi ise şablon parametreleri olarak verilen işlevleri işletiyor ve onların sonuçlarını bir sonraki işleve parametre olarak geçiriyor. Gösterdiğin kodda önce get() işlevi çağrılacak ve onun sonucu parseJSON() işlevine verilecek. Ek: İlk işlevin kullanacağı parametre ise pipe'a kendi işlev parametresi olarak veriliyor. Buradaki "ipinfo.io/" get()'e verilecek; get("ipinfo.io/") çağrılacak ve onun sonucu parseJSON()'a geçirilecek.

Anlaşılan, aralıkların zincirleme çağrılmalarına çok benziyor ama aralık algoritmaları ile değil, sıradan işlevlerle işliyor. Yararı ve farkı o. :)

Ali
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Forum: Ders Arası RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-19, 08:15:06 (UTC -08:00)