| |
| Posted by Ali Çehreli in reply to Ali Çehreli | PermalinkReply |
|
Ali Çehreli
Posted in reply to Ali Çehreli
| Bu buluşmada aşağıdaki kodları karaladık:
/*
DDili Sohbeti, 9 Ocak 2022
*/
/+
import std.format;
import std.stdio;
void main() {
// in
auto aa = [ 1 : "bir" ];
assert(1 in aa);
assert(2 !in aa);
assert(!(3 in aa));
// 2 in
int body;
foo(51);
int bölünen = 41;
int kalan;
int bölüm = böl(bölünen, kalan);
writefln!"%s'in sonucu: %s, %s"(bölünen, kalan, bölüm);
}
// eski: in => const scope
//
// yeni : in => const
//
// yeni + -preview=in :
// in : const scope
// rvlaue'lar referans olarak geciyor
int böl(in int sayı, ref int kalan) {
kalan = sayı % 2;
return sayı / 2;
}
double foo(int i)
in (i < 100, format!"%s olmaz"(i))
in (i % 2, "tek olsun")
out (sonuc; sonuc < 0, "hata")
{
return -5.0;
}
version (none) {
double foo(int i)
in {
assert(i < 100, format!"%s olmaz"(i));
assert(i % 2, "tek olsun");
}
out (sonuc) {
assert(sonuc < 0, "hata");
}
do {
return -5.0 + 10;
}
} // version (none)
+/
/+
import std.stdio;
struct Alt {
int i;
this(ref const(typeof(this)) that) {
writeln(__PRETTY_FUNCTION__);
this.i = that.i;
}
}
struct Sayı {
this(ref const(typeof(this)) that) {
writeln(__PRETTY_FUNCTION__);
}
}
struct S {
Alt i;
Sayı[] sayılar;
this(ref const(S) o) {
writeln(__PRETTY_FUNCTION__);
this.i = o.i;
this.sayılar = o.sayılar.dup;
}
}
int foo(S s, out Alt alt) {
alt.i = 42;
return s.i.i * 10;
}
void main() {
auto s = S(Alt(4), [ Sayı(), Sayı() ]);
Alt alt;
writeln(foo(s, alt));
assert(alt.i == 42);
auto alt2 = Alt(7);
writeln(foo(S(Alt(100)), alt2));
assert(alt2.i == 42);
zar();
}
pure @nogc nothrow
int zar() {
debug(zar) writefln!"hello %s"("world");
// writefln!"hello %s"("world");
return 0;
}
+/
/+
struct S {
int[] dizi;
auto yarisi() inout {
return dizi[0..$/2];
}
}
void main() {
pragma(msg, typeof((immutable(S)()).yarisi()));
int[] a;
const(int)[] b;
immutable(int)[] c;
pragma(msg, typeof(foo(c, c)));
}
auto foo(inout int[] dizi, inout int[] dizi2) {
return dizi;
}
// Space ship <=>
+/
import std.stdio;
import std.random;
ref int seç(return ref int soldaki, return ref int sağdaki) {
return uniform(0, 2) ? soldaki : sağdaki; // ← derleme HATASI
}
ref int foo() {
int a;
int b;
return seç(a, b); // ← HATA: geçersiz referans döndürülüyor
}
void main() {
// int a;
// int b;
// seç(a, b) = 42000;
// writefln!"a %,s b %,s"(a, b);
foo() = 42; // ← HATA: yasal olmayan adrese yazılıyor
}
|