| ... | ... | @@ -2433,43 +2433,6 @@ test "array initialization with function calls" { |
| 2433 | 2433 | {#code_end#} |
| 2434 | 2434 | {#see_also|for|Slices#} |
| 2435 | 2435 | |
| 2436 | | {#header_open|Anonymous List Literals#} |
| 2437 | | <p>Similar to {#link|Enum Literals#} and {#link|Anonymous Struct Literals#} |
| 2438 | | the type can be omitted from array literals:</p> |
| 2439 | | {#code_begin|test|anon_list#} |
| 2440 | | const std = @import("std"); |
| 2441 | | const expect = std.testing.expect; |
| 2442 | | |
| 2443 | | test "anonymous list literal syntax" { |
| 2444 | | var array: [4]u8 = .{11, 22, 33, 44}; |
| 2445 | | try expect(array[0] == 11); |
| 2446 | | try expect(array[1] == 22); |
| 2447 | | try expect(array[2] == 33); |
| 2448 | | try expect(array[3] == 44); |
| 2449 | | } |
| 2450 | | {#code_end#} |
| 2451 | | <p> |
| 2452 | | If there is no type in the {#link|result location|Result Location Semantics#} then an |
| 2453 | | anonymous list literal actually turns into a {#link|struct#} with numbered field names: |
| 2454 | | </p> |
| 2455 | | {#code_begin|test|infer_list_literal#} |
| 2456 | | const std = @import("std"); |
| 2457 | | const expect = std.testing.expect; |
| 2458 | | |
| 2459 | | test "fully anonymous list literal" { |
| 2460 | | try dump(.{ @as(u32, 1234), @as(f64, 12.34), true, "hi"}); |
| 2461 | | } |
| 2462 | | |
| 2463 | | fn dump(args: anytype) !void { |
| 2464 | | try expect(args.@"0" == 1234); |
| 2465 | | try expect(args.@"1" == 12.34); |
| 2466 | | try expect(args.@"2"); |
| 2467 | | try expect(args.@"3"[0] == 'h'); |
| 2468 | | try expect(args.@"3"[1] == 'i'); |
| 2469 | | } |
| 2470 | | {#code_end#} |
| 2471 | | {#header_close#} |
| 2472 | | |
| 2473 | 2436 | {#header_open|Multidimensional Arrays#} |
| 2474 | 2437 | <p> |
| 2475 | 2438 | Multidimensional arrays can be created by nesting arrays: |
| ... | ... | @@ -3578,15 +3541,21 @@ fn dump(args: anytype) !void { |
| 3578 | 3541 | try expect(args.s[1] == 'i'); |
| 3579 | 3542 | } |
| 3580 | 3543 | {#code_end#} |
| 3544 | {#header_close#} |
| 3545 | |
| 3546 | {#header_open|Tuples#} |
| 3581 | 3547 | <p> |
| 3582 | 3548 | Anonymous structs can be created without specifying field names, and are referred to as "tuples". |
| 3583 | 3549 | </p> |
| 3584 | 3550 | <p> |
| 3585 | 3551 | The fields are implicitly named using numbers starting from 0. Because their names are integers, |
| 3586 | | the {#syntax#}@"0"{#endsyntax#} syntax must be used to access them. Names inside {#syntax#}@""{#endsyntax#} are always recognised as {#link|identifiers|Identifiers#}. |
| 3552 | they cannot be accessed with {#syntax#}.{#endsyntax#} syntax without also wrapping them in |
| 3553 | {#syntax#}@""{#endsyntax#}. Names inside {#syntax#}@""{#endsyntax#} are always recognised as |
| 3554 | {#link|identifiers|Identifiers#}. |
| 3587 | 3555 | </p> |
| 3588 | 3556 | <p> |
| 3589 | | Like arrays, tuples have a .len field, can be indexed and work with the ++ and ** operators. They can also be iterated over with {#link|inline for#}. |
| 3557 | Like arrays, tuples have a .len field, can be indexed (provided the index is comptime-known) |
| 3558 | and work with the ++ and ** operators. They can also be iterated over with {#link|inline for#}. |
| 3590 | 3559 | </p> |
| 3591 | 3560 | {#code_begin|test|tuple#} |
| 3592 | 3561 | const std = @import("std"); |
| ... | ... | @@ -6488,7 +6457,22 @@ test "coercion between unions and enums" { |
| 6488 | 6457 | {#see_also|union|enum#} |
| 6489 | 6458 | {#header_close#} |
| 6490 | 6459 | {#header_open|Type Coercion: undefined#} |
| 6491 | | <p>{#link|undefined#} can be cast to any type.</p> |
| 6460 | <p>{#link|undefined#} can be coerced to any type.</p> |
| 6461 | {#header_close#} |
| 6462 | |
| 6463 | {#header_open|Type Coercion: tuples to arrays#} |
| 6464 | <p>{#link|Tuples#} can be coerced to arrays, if all of the fields have the same type.</p> |
| 6465 | {#code_begin|test|test_coerce_tuples_arrays#} |
| 6466 | const std = @import("std"); |
| 6467 | const expect = std.testing.expect; |
| 6468 | |
| 6469 | const Tuple = struct{ u8, u8 }; |
| 6470 | test "coercion from homogenous tuple to array" { |
| 6471 | 	const tuple: Tuple = .{5, 6}; |
| 6472 | 	const array: [2]u8 = tuple; |
| 6473 | 	_ = array; |
| 6474 | } |
| 6475 | {#code_end#} |
| 6492 | 6476 | {#header_close#} |
| 6493 | 6477 | {#header_close#} |
| 6494 | 6478 | |