multiple assign
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user