221V 2 дней назад
Родитель
Сommit
55cb5805ad
1 измененных файлов с 46 добавлено и 46 удалено
  1. 46 46
      exercises/048_methods2.zig

+ 46 - 46
exercises/048_methods2.zig

@@ -4,58 +4,58 @@
 //
 const std = @import("std");
 
-const Elephant = struct {
-    letter: u8,
-    tail: ?*Elephant = null,
-    visited: bool = false,
-
-    // New Elephant methods!
-    pub fn getTail(self: *Elephant) *Elephant {
-        return self.tail.?; // Remember, this means "orelse unreachable"
-    }
-
-    pub fn hasTail(self: *Elephant) bool {
-        return (self.tail != null);
-    }
-
-    pub fn visit(self: *Elephant) void {
-        self.visited = true;
-    }
-
-    pub fn print(self: *Elephant) void {
-        // Prints elephant letter and [v]isited
-        const v: u8 = if (self.visited) 'v' else ' ';
-        std.debug.print("{u}{u} ", .{ self.letter, v });
-    }
+const Elephant = struct{
+  letter: u8,
+  tail: ?*Elephant = null,
+  visited: bool = false,
+  
+  // New Elephant methods!
+  pub fn getTail(self: *Elephant) *Elephant{
+    return self.tail.?; // Remember, this means "orelse unreachable"
+  }
+  
+  pub fn hasTail(self: *Elephant) bool{
+    return (self.tail != null);
+  }
+  
+  pub fn visit(self: *Elephant) void{
+    self.visited = true;
+  }
+  
+  pub fn print(self: *Elephant) void{
+    // Prints elephant letter and [v]isited
+    const v: u8 = if (self.visited) 'v' else ' ';
+    std.debug.print("{u}{u} ", .{ self.letter, v });
+  }
 };
 
-pub fn main() void {
-    var elephantA = Elephant{ .letter = 'A' };
-    var elephantB = Elephant{ .letter = 'B' };
-    var elephantC = Elephant{ .letter = 'C' };
-
-    // This links the elephants so that each tail "points" to the next.
-    elephantA.tail = &elephantB;
-    elephantB.tail = &elephantC;
-
-    visitElephants(&elephantA);
-
-    std.debug.print("\n", .{});
+pub fn main() void{
+  var elephantA = Elephant{ .letter = 'A' };
+  var elephantB = Elephant{ .letter = 'B' };
+  var elephantC = Elephant{ .letter = 'C' };
+  
+  // This links the elephants so that each tail "points" to the next.
+  elephantA.tail = &elephantB;
+  elephantB.tail = &elephantC;
+  
+  visitElephants(&elephantA);
+  
+  std.debug.print("\n", .{});
 }
 
 // This function visits all elephants once, starting with the
 // first elephant and following the tails to the next elephant.
-fn visitElephants(first_elephant: *Elephant) void {
-    var e = first_elephant;
-
-    while (true) {
-        e.print();
-        e.visit();
-
-        // This gets the next elephant or stops:
-        // which method do we want here?
-        e = if (e.hasTail()) e.??? else break;
-    }
+fn visitElephants(first_elephant: *Elephant) void{
+  var e = first_elephant;
+  
+  while(true){
+    e.print();
+    e.visit();
+    
+    // This gets the next elephant or stops:
+    // which method do we want here?
+    e = if(e.hasTail()) e.getTail() else break;
+  }
 }
 
 // Zig's enums can also have methods! This comment originally asked