Dave Gauer 4 лет назад
Родитель
Сommit
30ef32e238
4 измененных файлов с 67 добавлено и 0 удалено
  1. 40 0
      06_strings.zig
  2. 24 0
      07_strings2.zig
  3. 1 0
      README.md
  4. 2 0
      ziglings

+ 40 - 0
06_strings.zig

@@ -0,0 +1,40 @@
+//
+// Now that we've learned about arrays, we can talk about strings.
+// 
+// We've already seen Zig string literals: "Hello world.\n"
+//
+// Like the C language, Zig stores strings as arrays of bytes
+// encoded as UTF-8 characters terminated with a null value.
+// For now, just focus on the fact that strings are arrays of
+// characters!
+//
+const std = @import("std");
+
+pub fn main() void {
+    const ziggy = "stardust";
+
+    // Use array square bracket syntax to get the letter 'd' from
+    // the string "stardust" above.
+    const d: u8 = ziggy[???];
+
+    // Use the array repeat '**' operator to make "ha ha ha".
+    const laugh = "ha " ???;
+
+    // Use the array concatenation '++' operator to make "Major Tom".
+    // (You'll need to add a space as well!)
+    const major = "Major";
+    const tom = "Tom";
+    const major_tom = major ??? tom;
+
+    std.debug.print("d={u} {}{}\n",.{d, laugh, major_tom});
+    // Going deeper:
+    // Keen eyes will notice that we've put a 'u' inside the '{}'
+    // placeholder in the format string above. This tells the
+    // print() function (which uses std.fmt.format() function) to
+    // print out a UTF-8 character. Otherwise we'd see '100', which
+    // is the decimal number corresponding with the 'd' character
+    // in UTF-8.
+    // While we're on this subject, 'c' (ASCII encoded character)
+    // would work in place for 'u' because the first 128 characters
+    // of UTF-8 are the same as ASCII!
+}

+ 24 - 0
07_strings2.zig

@@ -0,0 +1,24 @@
+//
+// Here's a fun one: Zig has multi-line strings!
+//
+// To make a multi-line string, put '\\' at the beginning of each
+// line just like a code comment but with backslashes instead:
+//
+//     const two_lines =
+//         \\Line One
+//         \\Line Two
+//     ;
+// 
+// See if you can make this program print some song lyrics.
+//
+const std = @import("std");
+
+pub fn main() void {
+    const lyrics = 
+        Ziggy played guitar
+        Jamming good with Andrew Kelley
+        And the Spiders from Mars
+    ;
+
+    std.debug.print("{}\n",.{lyrics});
+}

+ 1 - 0
README.md

@@ -61,6 +61,7 @@ Planned exercises:
 * [x] Importing standard library
 * [x] Importing standard library
 * [x] Assignment
 * [x] Assignment
 * [x] Arrays
 * [x] Arrays
+* [x] Strings
 * [ ] If
 * [ ] If
 * [ ] While
 * [ ] While
 * [ ] For
 * [ ] For

+ 2 - 0
ziglings

@@ -70,6 +70,8 @@ check_it 02_std.zig "Standard Library"
 check_it 03_assignment.zig "55 314159 -11" "There are three mistakes in this one!"
 check_it 03_assignment.zig "55 314159 -11" "There are three mistakes in this one!"
 check_it 04_arrays.zig "Fourth: 7, Length: 8" "There are two things to complete here."
 check_it 04_arrays.zig "Fourth: 7, Length: 8" "There are two things to complete here."
 check_it 05_arrays2.zig "LEET: 1337, Bits: 100110011001" "Fill in the two arrays."
 check_it 05_arrays2.zig "LEET: 1337, Bits: 100110011001" "Fill in the two arrays."
+check_it 06_strings.zig "d=d ha ha ha Major Tom" "Each '???' needs something filled in."
+check_it 07_strings2.zig "Ziggy" "Please fix the lyrics!"
 
 
 echo
 echo
 echo "    __   __          _ "
 echo "    __   __          _ "