mirror of
https://codeberg.org/ziglings/exercises.git
synced 2026-03-28 21:34:52 +00:00
Merge branch 'main' into emphasize-for-loop-range
This commit is contained in:
commit
88510735e1
|
|
@ -278,7 +278,8 @@ pub fn build(b: *Build) !void {
|
|||
return error.UnexpectedEOF;
|
||||
}
|
||||
|
||||
starting_exercise = try std.fmt.parseInt(u32, contents, 10);
|
||||
const trimmed_contents = std.mem.trim(u8, contents, "\r\n");
|
||||
starting_exercise = try std.fmt.parseInt(u32, trimmed_contents, 10);
|
||||
} else |err| {
|
||||
switch (err) {
|
||||
std.Io.File.OpenError.FileNotFound => {
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@
|
|||
//
|
||||
// }
|
||||
//
|
||||
// The "continue expression" executes every time the loop restarts
|
||||
// whether the "continue" statement happens or not.
|
||||
// The "continue expression" executes every single time the loop restarts,
|
||||
// even when a `continue` statement skips the rest of the loop body.
|
||||
//
|
||||
const std = @import("std");
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
// var foo: u8 = 5; // foo is 5
|
||||
// var bar: *u8 = &foo; // bar is a pointer
|
||||
//
|
||||
// What is a pointer? It's a reference to a value. In this example
|
||||
// What is a pointer? It's a reference to a value. In this example,
|
||||
// bar is a reference to the memory space that currently contains the
|
||||
// value 5.
|
||||
//
|
||||
|
|
|
|||
|
|
@ -137,19 +137,20 @@ pub fn main() void {
|
|||
}
|
||||
|
||||
// NOTE: This exercise did not originally include the function below.
|
||||
// But a change after Zig 0.10.0 added the source file name to the
|
||||
// type. "Narcissus" became "065_builtins2.Narcissus".
|
||||
// After Zig 0.10.0, `@typeName` began prefixing the returned type name
|
||||
// with the source file name. For example, "Narcissus" became
|
||||
// "065_builtins2.Narcissus".
|
||||
//
|
||||
// To fix this, we've added this function to strip the filename from
|
||||
// the front of the type name. (It returns a slice of the type name
|
||||
// starting at the index + 1 of character ".")
|
||||
// starting just after the ".")
|
||||
//
|
||||
// We'll be seeing @typeName again in Exercise 070. For now, you can
|
||||
// see that it takes a Type and returns a u8 "string".
|
||||
fn maximumNarcissism(myType: type) []const u8 {
|
||||
const indexOf = @import("std").mem.indexOf;
|
||||
const find = @import("std").mem.find;
|
||||
|
||||
// Turn "065_builtins2.Narcissus" into "Narcissus"
|
||||
const name = @typeName(myType);
|
||||
return name[indexOf(u8, name, ".").? + 1 ..];
|
||||
return name[find(u8, name, ".").? + 1 ..];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
// format string can be checked for errors at compile time rather
|
||||
// than crashing at runtime.
|
||||
//
|
||||
// (The actual formatting is done by std.fmt.format() and it
|
||||
// (The actual formatting is done by std.Io.Writer.print() and it
|
||||
// contains a complete format string parser that runs entirely at
|
||||
// compile time!)
|
||||
//
|
||||
|
|
|
|||
|
|
@ -118,6 +118,10 @@ fn printTuple(tuple: anytype) void {
|
|||
// @field(foo, "x"); // returns the value at foo.x
|
||||
//
|
||||
// The first field should print as: "0"(bool):true
|
||||
//
|
||||
// Hint: Be careful! If your 'lhs' is a type, @field() looks
|
||||
// for declarations. If it's a value, it looks for data.
|
||||
//
|
||||
print("\"{s}\"({any}):{any} ", .{
|
||||
field.???,
|
||||
field.???,
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
// The functionality of the standard library is becoming increasingly
|
||||
// important in Zig. First of all, it is helpful to take a look at how
|
||||
// the individual functions are implemented. Because this is wonderfully
|
||||
// suitable as a template for your own functions. In addition these
|
||||
// suitable as a template for your own functions. In addition, these
|
||||
// standard functions are part of the basic configuration of Zig.
|
||||
//
|
||||
// This means that they are always available on every system.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
--- exercises/065_builtins2.zig 2025-06-17 13:58:07.857258167 +0200
|
||||
+++ answers/065_builtins2.zig 2025-06-17 13:56:36.630415938 +0200
|
||||
--- exercises/065_builtins2.zig 2026-02-27 13:10:36
|
||||
+++ answers/065_builtins2.zig 2026-02-27 13:10:52
|
||||
@@ -58,7 +58,7 @@
|
||||
// Oops! We cannot leave the 'me' and 'myself' fields
|
||||
// undefined. Please set them here:
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
--- exercises/082_anonymous_structs3.zig 2025-03-14 16:41:17.892873287 +0200
|
||||
+++ answers/082_anonymous_structs3.zig 2025-03-14 16:40:56.043829543 +0200
|
||||
--- exercises/082_anonymous_structs3.zig 2026-02-27 13:05:46
|
||||
+++ answers/082_anonymous_structs3.zig 2026-02-27 13:07:22
|
||||
@@ -82,14 +82,14 @@
|
||||
// @typeInfo(Circle).@"struct".fields
|
||||
//
|
||||
|
|
@ -17,9 +17,9 @@
|
|||
// 3. Print the field's name, type, and value.
|
||||
//
|
||||
// Each 'field' in this loop is one of these:
|
||||
@@ -119,9 +119,9 @@
|
||||
@@ -123,9 +123,9 @@
|
||||
// for declarations. If it's a value, it looks for data.
|
||||
//
|
||||
// The first field should print as: "0"(bool):true
|
||||
print("\"{s}\"({any}):{any} ", .{
|
||||
- field.???,
|
||||
- field.???,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user