Explorar o código

`while`, `loop` and `until` flow control

tcheukueppo %!s(int64=2) %!d(string=hai) anos
pai
achega
ecc123962d
Modificáronse 1 ficheiros con 34 adicións e 3 borrados
  1. 34 3
      hacking_pity/pity.md

+ 34 - 3
hacking_pity/pity.md

@@ -399,6 +399,7 @@ the dynamic scope of code passed as argument to gather.
 ```raku
 fun factors(n) {
   let k = 1
+
   gather {
     while k ** 2 < n {
         if n % k {
@@ -429,18 +430,48 @@ given 34 {
 
 just like the C-for loop
 
-general form: `loop initialization; condition; step { ... }`
+general form: `loop initializer; condition; step { ... }`
 
 ```raku
-let k
+loop let k = 0; k <= 20; k++ { k.say }
+
+loop let k = 0;;k++ {
+    k.say
+    break if k == 10
+}
 
-loop k = 0; k <= 20; k++ { }
+loop { say "looping forever" }
 ```
 
 12. `while`, `until`
 
+```raku
+k = 6
+while k > 1 {
+    k.say
+    k--
+}
+
+until k == 0 {
+    say "not entering"
+}
+```
+
 13. `repeat` `while`/`until`
 
+```raku
+k = Set.new(2, 4, 5)
+b = [2, 7, 3]
+
+repeat {
+    k.add(b.pop)
+} while [2, 7] ∉  k
+
+repeat {
+    say "forever"
+} until false;
+```
+
 14. `LABELS`
 
 15. `once`