string buildSwitch(string var, CASE[] cases)
{
import std.string : format;
import std.array : join;
import std.algorithm : map;
return format(
q{
switch(%s)
{
%s
Merhaba("Burası Top");
break;
default:
assert(false);
}
},
var,
cases.map!(s => format(" case %s:", s)).join("\n")
);
}
void Merhaba(string msg)
{
"Heyy, merhaba!\n".
writeln(msg);
}
enum CASE
{
Top = 10,
Max,
Set,
Min
}
import std.stdio;
int main()
{
with(CASE) {
pragma(msg, buildSwitch("SWITCH_İÇİNE YAZILAN",
[Top, Max, Set, Min]));
auto seçenek = Top;
mixin(
buildSwitch("seçenek", [ Top, Max, Set, Min ]),
"\"Burası hala with(CASE) içi, işte kanıtı: \".writeln(Set);"
);
}
auto exitCode = CASE.Max - 1;
"Ama burası çıkan rakamdan anlayın artık: ".writeln(exitCode);
return exitCode;
}/* ÇIKTISI:
Heyy, merhaba!
burası Top
Burası hala with(CASE) içi, işte kanıtı: Set
Ama burası çıkan rakamdan anlayın artık: 10
------------------
(program exited with code: 10)
Press return to continue
*/
Bir de PRAGMA ÇIKTISI var, onu derlerken çalıştırmadan önce kendiniz göreceksiniz zaten. (D)ilin bu özelliklerini gördükçe D'de kod yazmayanlar çok şey kaybediyor!
D, yüksek sesle güldürür :D