mirror of
https://codeberg.org/andyscott/ziglings.git
synced 2024-12-21 21:53:11 -05:00
fix whitespace line-endings
This commit is contained in:
parent
4c7eebbbfc
commit
29d32bfa79
19 changed files with 26 additions and 27 deletions
|
@ -33,7 +33,7 @@ pub fn main() void {
|
|||
// have a little preview of Zig 'for' loops instead:
|
||||
//
|
||||
// for (<item array>) |item| { <do something with item> }
|
||||
//
|
||||
//
|
||||
// Don't worry, we'll cover looping properly in upcoming
|
||||
// lessons.
|
||||
//
|
||||
|
|
|
@ -23,6 +23,6 @@ pub fn main() void {
|
|||
0b1101000, // binary
|
||||
0x66, // hex
|
||||
};
|
||||
|
||||
|
||||
print("{s} is cool.\n", .{zig});
|
||||
}
|
||||
|
|
|
@ -59,7 +59,7 @@ pub fn main() void {
|
|||
// | exponent significand
|
||||
// |
|
||||
// sign
|
||||
//
|
||||
//
|
||||
// This example is the decimal number 3.140625, which happens to
|
||||
// be the closest representation of Pi we can make with an f16
|
||||
// due to the way IEEE-754 floating points store digits:
|
||||
|
@ -86,6 +86,6 @@ pub fn main() void {
|
|||
//
|
||||
// Fun fact: sometimes you'll see the significand labeled as a
|
||||
// "mantissa" but Donald E. Knuth says not to do that.
|
||||
//
|
||||
//
|
||||
// C compatibility fact: There is also a Zig floating point type
|
||||
// specifically for working with C ABIs called c_longdouble.
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
// const arr: [3]u8 = [3]u8{5, 6, 7};
|
||||
// const s: []const u8 = &arr; // to slice
|
||||
// const p: [*]const u8 = &arr; // to many-item pointer
|
||||
//
|
||||
//
|
||||
// 4. Single-item mutable pointers can coerce to single-item
|
||||
// pointers pointing to an array of length 1. (Interesting!)
|
||||
//
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
//
|
||||
// The Zig compiler provides "builtin" functions. You've already
|
||||
// gotten used to seeing an @import() at the top of every
|
||||
// Ziglings exercise.
|
||||
// Ziglings exercise.
|
||||
//
|
||||
// We've also seen @intCast() in "016_for2.zig", "058_quiz7.zig";
|
||||
// and @enumToInt() in "036_enums2.zig".
|
||||
|
@ -51,7 +51,7 @@ pub fn main() void {
|
|||
// 1111 + 1 = 0000 Yes! (Real answer is 10000)
|
||||
// 0000 + 1 = 0001 Yes!
|
||||
// 0001 + 1 = 0010 Yes!
|
||||
//
|
||||
//
|
||||
// Also, check out our fancy formatting! b:0>4 means, "print
|
||||
// as a binary number, zero-pad right-aligned four digits."
|
||||
print("{b:0>4} + {b:0>4} = {b:0>4} ({})", .{a, b, my_result, overflowed});
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
//
|
||||
// Zig has builtins for mathematical operations such as...
|
||||
//
|
||||
// @sqrt @sin @cos
|
||||
// @sqrt @sin @cos
|
||||
// @exp @log @floor
|
||||
//
|
||||
// ...and lots of type casting operations such as...
|
||||
|
@ -20,18 +20,18 @@
|
|||
// by exploring just THREE of Zig's MANY introspection abilities:
|
||||
//
|
||||
// 1. @This() type
|
||||
//
|
||||
//
|
||||
// Returns the innermost struct, enum, or union that a function
|
||||
// call is inside.
|
||||
//
|
||||
// 2. @typeInfo(comptime T: type) @import("std").builtin.TypeInfo
|
||||
//
|
||||
//
|
||||
// Returns information about any type in a TypeInfo union which
|
||||
// will contain different information depending on which type
|
||||
// you're examining.
|
||||
//
|
||||
//
|
||||
// 3. @TypeOf(...) type
|
||||
//
|
||||
//
|
||||
// Returns the type common to all input parameters (each of which
|
||||
// may be any expression). The type is resolved using the same
|
||||
// "peer type resolution" process the compiler itself uses when
|
||||
|
@ -46,7 +46,7 @@ const Narcissus = struct {
|
|||
me: *Narcissus = undefined,
|
||||
myself: *Narcissus = undefined,
|
||||
echo: void = undefined,
|
||||
|
||||
|
||||
fn fetchTheMostBeautifulType() type {
|
||||
return @This();
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
//
|
||||
// Zig takes these concepts further by making these optimizations
|
||||
// an integral part of the language itself!
|
||||
//
|
||||
//
|
||||
const print = @import("std").debug.print;
|
||||
|
||||
pub fn main() void {
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
// --o-- comptime * | .. .
|
||||
// * | * . . . . --*-- . * .
|
||||
// . . . . . . . . . | . . .
|
||||
//
|
||||
//
|
||||
// When placed before a variable declaration, 'comptime'
|
||||
// guarantees that every usage of that variable will be performed
|
||||
// at compile time.
|
||||
|
|
|
@ -49,6 +49,6 @@ fn makeSequence(comptime T: type, ??? size: usize) [???]T {
|
|||
while (i < size) : (i += 1) {
|
||||
sequence[i] = @intCast(T, i) + 1;
|
||||
}
|
||||
|
||||
|
||||
return sequence;
|
||||
}
|
||||
|
|
|
@ -140,6 +140,6 @@ fn isADuck(possible_duck: anytype) bool {
|
|||
// error, not a runtime panic or crash!
|
||||
possible_duck.quack();
|
||||
}
|
||||
|
||||
|
||||
return is_duck;
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ pub fn main() void {
|
|||
'*' => value *= digit,
|
||||
else => unreachable,
|
||||
}
|
||||
// ...But it's quite a bit more exciting than it first appears.
|
||||
// ...But it's quite a bit more exciting than it first appears.
|
||||
// The 'inline while' no longer exists at runtime and neither
|
||||
// does anything else not touched directly by runtime
|
||||
// code. The 'instructions' string, for example, does not
|
||||
|
@ -61,6 +61,6 @@ pub fn main() void {
|
|||
// code at compile time. Guess we're compiler writers
|
||||
// now. See? The wizard hat was justified after all.
|
||||
}
|
||||
|
||||
|
||||
print("{}\n", .{value});
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ fn getLlama(i: usize) u32 {
|
|||
}
|
||||
|
||||
// Fun fact: this assert() function is identical to
|
||||
// std.debug.assert() from the Zig Standard Library.
|
||||
// std.debug.assert() from the Zig Standard Library.
|
||||
fn assert(ok: bool) void {
|
||||
if (!ok) unreachable;
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@ const f_paths = [_]Path{ makePath(&f, &d, 7) };
|
|||
//
|
||||
// For example, we could create our own "path language" and
|
||||
// create Paths from that. Something like this, perhaps:
|
||||
//
|
||||
//
|
||||
// a -> (b[2])
|
||||
// b -> (a[2] d[1])
|
||||
// c -> (d[3] e[2])
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
// Versatility! Zig strings are compatible with C strings (which
|
||||
// are null-terminated) AND can be coerced to a variety of other
|
||||
// Zig types:
|
||||
//
|
||||
//
|
||||
// const a: [5]u8 = "array".*;
|
||||
// const b: *const [16]u8 = "pointer to array";
|
||||
// const c: []const u8 = "slice";
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// past the authorities: the @"" identifier quoting syntax.
|
||||
//
|
||||
// @"foo"
|
||||
//
|
||||
//
|
||||
// Please help us safely smuggle these fugitive identifiers into
|
||||
// our program:
|
||||
//
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
// If a .{} thing is what the print function wants, do we need to
|
||||
// break our "tuple" apart and put it in another one? No! It's
|
||||
// redundant! This will print the same thing:
|
||||
//
|
||||
//
|
||||
// print("{} {}\n", foo);
|
||||
//
|
||||
// Aha! So now we know that print() takes a "tuple". Things are
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
// fn bar() void {
|
||||
// fooThatSuspends();
|
||||
// }
|
||||
//
|
||||
//
|
||||
// 6. The main() function cannot be async!
|
||||
//
|
||||
// Given facts 3 and 4, how do we fix this program (broken by facts
|
||||
|
|
|
@ -26,4 +26,3 @@ fn foo() void {
|
|||
suspend {}
|
||||
print("async!\n", .{});
|
||||
}
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
// fn bar() void {
|
||||
// fooThatMightSuspend(true); // Now bar() is async!
|
||||
// }
|
||||
//
|
||||
//
|
||||
// But if you KNOW the function won't suspend, you can make a
|
||||
// promise to the compiler with the 'nosuspend' keyword:
|
||||
//
|
||||
|
|
Loading…
Reference in a new issue