Advertisement
Guest User

Untitled

a guest
Oct 21st, 2020
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const std = @import("std");
  2. const math = std.math;
  3.  
  4. const Rect = struct {
  5.     const Self = @This();
  6.     width: f64,
  7.     height: f64,
  8.  
  9.     fn area(self: Self) f64 {
  10.         return self.width * self.height;
  11.     }
  12.  
  13.     fn perim(self: Self) f64 {
  14.         return 2 * self.width + 2 * self.height;
  15.     }
  16. };
  17.  
  18. const Circle = struct {
  19.     const Self = @This();
  20.     radius: f64,
  21.  
  22.     fn area(self: Self) f64 {
  23.         return math.pi * self.radius * self.radius;
  24.     }
  25.  
  26.     fn perim(self: Self) f64 {
  27.         return 2 * math.pi * self.radius;
  28.     }
  29. };
  30.  
  31. fn measure(comptime T: type, geometry: T) void {
  32.     std.debug.print("{}\n{}\n{}\n", .{
  33.         geometry,
  34.         geometry.area(),
  35.         geometry.perim(),
  36.     });
  37. }
  38.  
  39. pub fn main() anyerror!void {
  40.     var r = Rect{ .width = 3, .height = 4 };
  41.     var c = Circle{ .radius = 5 };
  42.  
  43.     measure(Rect, r);
  44.     measure(Circle, c);
  45. }
  46.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement