Просмотр исходного кода

Added comptime wizardry to 075 quiz8

Thanks to Helios on Discord for the wizardry!
Dave Gauer 3 лет назад
Родитель
Сommit
c3128f3dee
1 измененных файлов с 15 добавлено и 7 удалено
  1. 15 7
      exercises/075_quiz8.zig

+ 15 - 7
exercises/075_quiz8.zig

@@ -154,13 +154,21 @@ pub fn main() void {
     const start = &a;        // Archer's Point
     const destination = &f;  // Fox Pond
 
-    // TODO: can we neaten this up????
-    a.paths = a_paths[0..];
-    b.paths = b_paths[0..];
-    c.paths = c_paths[0..];
-    d.paths = d_paths[0..];
-    e.paths = e_paths[0..];
-    f.paths = f_paths[0..];
+    // We could either have this:
+    //
+    //   a.paths = a_paths[0..];
+    //   b.paths = b_paths[0..];
+    //   c.paths = c_paths[0..];
+    //   d.paths = d_paths[0..];
+    //   e.paths = e_paths[0..];
+    //   f.paths = f_paths[0..];
+    //
+    // or this comptime wizardry:
+    //
+    const letters = [_][]const u8{ "a", "b", "c", "d", "e", "f" };
+    inline for (letters) |letter| {
+        @field(@This(), letter).paths = @field(@This(), letter ++ "_paths")[0..];
+    }
 
     var notebook = HermitsNotebook{};
     var working_note = NotebookEntry{