mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 14:23:09 +00:00
parent
35c6fe665c
commit
02b4ea71e3
@ -3824,7 +3824,7 @@ test "simple union" {
|
|||||||
to use with {#link|switch#} expressions.
|
to use with {#link|switch#} expressions.
|
||||||
Tagged unions coerce to their tag type: {#link|Type Coercion: unions and enums#}.
|
Tagged unions coerce to their tag type: {#link|Type Coercion: unions and enums#}.
|
||||||
</p>
|
</p>
|
||||||
{#code_begin|test|test_switch_tagged_union#}
|
{#code_begin|test|test_tagged_union#}
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
const expect = std.testing.expect;
|
const expect = std.testing.expect;
|
||||||
|
|
||||||
@ -3850,14 +3850,6 @@ test "switch on tagged union" {
|
|||||||
test "get tag type" {
|
test "get tag type" {
|
||||||
try expect(std.meta.Tag(ComplexType) == ComplexTypeTag);
|
try expect(std.meta.Tag(ComplexType) == ComplexTypeTag);
|
||||||
}
|
}
|
||||||
|
|
||||||
test "coerce to enum" {
|
|
||||||
const c1 = ComplexType{ .ok = 42 };
|
|
||||||
const c2 = ComplexType.not_ok;
|
|
||||||
|
|
||||||
try expect(c1 == .ok);
|
|
||||||
try expect(c2 == .not_ok);
|
|
||||||
}
|
|
||||||
{#code_end#}
|
{#code_end#}
|
||||||
<p>In order to modify the payload of a tagged union in a switch expression,
|
<p>In order to modify the payload of a tagged union in a switch expression,
|
||||||
place a {#syntax#}*{#endsyntax#} before the variable name to make it a pointer:
|
place a {#syntax#}*{#endsyntax#} before the variable name to make it a pointer:
|
||||||
@ -3877,7 +3869,6 @@ const ComplexType = union(ComplexTypeTag) {
|
|||||||
|
|
||||||
test "modify tagged union in switch" {
|
test "modify tagged union in switch" {
|
||||||
var c = ComplexType{ .ok = 42 };
|
var c = ComplexType{ .ok = 42 };
|
||||||
try expect(@as(ComplexTypeTag, c) == ComplexTypeTag.ok);
|
|
||||||
|
|
||||||
switch (c) {
|
switch (c) {
|
||||||
ComplexTypeTag.ok => |*value| value.* += 1,
|
ComplexTypeTag.ok => |*value| value.* += 1,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user