November 21, 2021

Merhaba,

Elbette bu kadar da kişiselleştirmeye gerek yok ama özellikle import satırında (alias kullanmadan) namespace çakışmasını engelleme yönteminin lezizliği ve ölçeklenebilir özelliği alışılmışın dışında ("42: notunu aldıysak kaldık!" gibi) şeyler çıkarmayı mümkün kılıyor! Harika...

//import std.conv, std.stdio;/*
import std.conv : stdTo = to; // To save screen space
import std.traits : isNumeric;
import std.stdio;

string to(To : string, From : string)(From str)
{
  return ": " ~ str;
}

string to(To : string, From)(From value)
if(isNumeric!From)
{
  return stdTo!string(value);
}

string to(To : string, From : bool)(From b)
{
  return b ? "geçtik!" : "kaldık!";
}//*/

/** Eğer ilk satırdaki // çıkarırsanız kişiselleştirilmiş bir **/
/** to!string özelliğini etkinleştirmiş olursunuz ve böylece  **/
/** kodun çıktısı gerçek (orijinal hali) olabilir :)          **/

void main()
{
  write(42.to!string);
  write("notunu aldıysak ".to!string);
  writeln(false.to!string);
}/* ÇIKTISI:
42notunu aldıysak false
*/
November 21, 2021

On Sunday, 21 November 2021 at 15:58:34 UTC, Salih Dincer wrote:

>
import std.conv : stdTo = to;
import std.stdio;

string to(To : string, From : bool)(From b)
{
  return b ? "doğru" : "yanlış";
}

void main()
{
  writeln(true.to!string);
  write(false.to!string);
}

Arkadaşlar D'nin değerini bilin! C++'cılar böyle uğraşıyorlar! Hatta varsayılan olarak (önden boolalpha bayrağı göndermeden) true/false yazamıyor bile 😀

#include <string>
#include <locale>
#include <iostream>

using namespace std;

class LocaleTR : public std::numpunct <char>
{
  protected:
    std::string do_truename() const {
      return "doğru";
    }

    std::string do_falsename() const {
      return "yanlış";
    }
};

int main()
{
  std::cout.imbue(std::locale(
    std::locale(),
    new LocaleTR)
  );

  std::cout << std::boolalpha;
  std::cout << true << "\n";
  std::cout << false;

  return 0;
}/* ÇIKTISI:
doğru
yanlış
*/