반응형

zig의 Switch에 대해 다룹니다.



다음 사이트에 있는 Zig 강좌를 따라해보며 포스트를 올려보고 있습니다.

https://zig.guide/



2024. 4. 20  최초작성




다음 포스트를 참고하여 zig 개발 환경을 구성하세요.

 

zig 설치하여 Visual Studio Code 개발환경 만들기 - Windows, Linux, macOS

https://webnautes.tistory.com/2301 



zig 강좌를 진행하고 있습니다.

 

zig 강좌 01 - Assignment(대입)

https://webnautes.tistory.com/2304

 

 

zig 강좌 02 - Arrays(배열)

https://webnautes.tistory.com/2305



zig 강좌 03 - if 문

https://webnautes.tistory.com/2306 



zig 강좌 04 - while 문

https://webnautes.tistory.com/2308 



zig 강좌 05 - for 문

https://webnautes.tistory.com/2309 



zig 강좌 06 -함수

https://webnautes.tistory.com/2313 



zig 강좌 07 - Defer

https://webnautes.tistory.com/2317




zig 강좌 08 - Switch

https://webnautes.tistory.com/2324




이번엔 다음 링크에 있는 내용을 정리해봤습니다.  

https://zig.guide/language-basics/switch



스위치를 사용하여 코드를 실행하는 예제입니다. 

const std = @import("std");

fn testFn(x: i32) void {
    std.debug.print("{} -> ", .{x});
    switch (x) {
        // 범위로 조건을 지정합니다.
        -1...1 => {
            std.debug.print("-1에서 1 사이의 숫자입니다.\n", .{});
        },
        // 값으로 조건을 지정합니다.
        10, 100 => {
            std.debug.print("10과 100 중 하나입니다.\n", .{});
        },
        5 => {
            std.debug.print("5입니다.\n", .{});
        },
        // 나머지 경우를 지정합니다.
        else => {
            std.debug.print("나머지 경우입니다.\n", .{});
        },
    }
}

pub fn main() void {
    testFn(-1);
    testFn(0);
    testFn(1);
    testFn(10);
    testFn(100);
    testFn(5);
    testFn(500);
    testFn(5.0); // 5로 타입이 변경됩니다.
}

 

실행결과입니다.

 

 % zig run main.zig

-1 -> -1에서 1 사이의 숫자입니다.

0 -> -1에서 1 사이의 숫자입니다.

1 -> -1에서 1 사이의 숫자입니다.

10 -> 10과 100 중 하나입니다.

100 -> 10과 100 중 하나입니다.

5 -> 5입니다.

500 -> 나머지 경우입니다.

5 -> 5입니다.




switch를 사용하여 값을 변경하는 간단한 예제입니다.

 

const std = @import("std");

fn testFn(x: i32) i32 {

    // 함수의 파리미터는 상수이므로 변수에 담아야 값을 변경할 수 있습니다.
    var y = x;

    std.debug.print("{} -> ", .{y});

    // 스위치 결과를 변수 y에 저장합니다.
    y = switch (y) {
        // 범위로 조건을 지정합니다.
        -100...-1 => -y,
        // 값으로 조건을 지정합니다.
        5, 10, 15 => @divExact(y, 5), // x / 5 대신 사용해야 합니다.
        2, 4, 8 => y * 10,
        // 나머지 경우를 지정합니다.
        else => y,
    };

    return y;
}

pub fn main() void {
    std.debug.print("{}\n", .{testFn(-100)});
    std.debug.print("{}\n", .{testFn(10)});
    std.debug.print("{}\n", .{testFn(8)});
    std.debug.print("{}\n", .{testFn(7)});
}



실행결과입니다.

 

% zig run main.zig

-100 -> 100

10 -> 2

8 -> 80

7 -> 7




반응형

'Zig > Zig 강좌' 카테고리의 다른 글

zig 강좌 07 - Defer  (0) 2024.04.13
zig 강좌 06 -함수  (0) 2024.04.10
zig 강좌 05 - for 문  (0) 2024.04.06
zig 강좌 04 - while 문  (0) 2024.04.04
zig 강좌 03 - if 문  (0) 2024.04.02

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts