multiple assign

This commit is contained in:
agra
2026-02-16 01:13:34 +02:00
parent fb60818424
commit 58e2a5bdb1
9 changed files with 171 additions and 13 deletions

View File

@@ -8,16 +8,12 @@ quick_sort :: (items: []$T) {
while j < hi {
if items[j] < pivot {
i += 1;
tmp := items[i];
items[i] = items[j];
items[j] = tmp;
items[i], items[j] = items[j], items[i];
}
j += 1;
}
i += 1;
tmp := items[i];
items[i] = items[hi];
items[hi] = tmp;
items[i], items[hi] = items[hi], items[i];
i;
}

View File

@@ -1012,5 +1012,32 @@ END;
print("flags-explicit: {}\n", wf);
print("flags-explicit-raw: {}\n", cast(s64) wf);
// --- Multi-target assignment (swap) ---
print("--- swap ---\n");
// Variable swap
{
sa := 10;
sb := 20;
sa, sb = sb, sa;
print("var swap: {} {}\n", sa, sb);
}
// Array element swap
{
sarr : [3]s64 = .[1, 2, 3];
sarr[0], sarr[2] = sarr[2], sarr[0];
print("arr swap: {} {}\n", sarr[0], sarr[2]);
}
// 3-way rotation
{
ra := 1;
rb := 2;
rc := 3;
ra, rb, rc = rc, ra, rb;
print("3-way: {} {} {}\n", ra, rb, rc);
}
print("=== DONE ===\n");
}