ex51 explanation improvements

This commit is contained in:
Dave Gauer 2021-03-05 13:31:31 -05:00
parent 5dc7ac219b
commit a75c9f5e07

View file

@ -85,9 +85,9 @@ pub fn main() void {
// Now let's circle back around to that "std" struct we imported // Now let's circle back around to that "std" struct we imported
// at the top. Since it's just a regular Zig value once it's // at the top. Since it's just a regular Zig value once it's
// imported, we can also assign new names for its fields. The // imported, we can also assign new names for its fields and
// "debug" field refers to another struct. And "print" is a public // declarations. "debug" refers to another struct and "print" is a
// function namespaced within THAT struct. // public function namespaced within THAT struct.
// //
// Let's assign the std.debug.print function to a const named // Let's assign the std.debug.print function to a const named
// "print" so that we can use this new name later! // "print" so that we can use this new name later!
@ -131,13 +131,21 @@ pub fn main() void {
// "glorp_access3" is interesting. It's also a pointer, but it's a // "glorp_access3" is interesting. It's also a pointer, but it's a
// const. Won't that disallow changing the gold value? No! As you // const. Won't that disallow changing the gold value? No! As you
// may recall from our earlier pointer experiments, a constant // may recall from our earlier pointer experiments, a constant
// pointer can't change what it's pointing AT, but the value at // pointer can't change what it's POINTING AT, but the value at
// the address it points to is still mutable! So we CAN change it. // the address it points to is still mutable! So we CAN change it.
const glorp_access3: *Character = &glorp; const glorp_access3: *Character = &glorp;
glorp_access3.gold = 333; glorp_access3.gold = 333;
print("3:{}!. ", .{glorp.gold == glorp_access3.gold}); print("3:{}!. ", .{glorp.gold == glorp_access3.gold});
// NOTE:
//
// If we tried to do this with a *const Character pointer,
// that would NOT work because that makes the data we would
// get a compiler error because the VALUE becomes immutable!
//
// Moving along...
//
// Passing arguments to functions is pretty much exactly like // Passing arguments to functions is pretty much exactly like
// making an assignment to a const (since Zig enforces that ALL // making an assignment to a const (since Zig enforces that ALL
// function parameters are const). // function parameters are const).