콘텐츠로 이동
Xen / docs

문서 검색

한국어 · v0.1.0-demo.2

검색어를 입력하세요.

    EN
    Xen / learn v0.1.0-demo.2

    변수와 값

    let으로 값에 이름을 붙입니다. 값을 나중에 바꾸려면 let mut을 사용합니다. : Int처럼 타입을 적을 수 있고, 값만으로 타입이 분명하면 생략할 수 있습니다.

    다음을 variables.xen으로 저장하세요.

    fn main() {
    let price: Int = 12;
    let mut quantity = 2;
    quantity = quantity + 1;
    let total = price * quantity;
    println(total);
    println(float(total) / 2.0);
    }
    터미널 창
    $ xen run variables.xen
    36
    18.0

    quantity를 바꾸어도 이미 계산해 둔 total은 자동으로 바뀌지 않습니다. 새로운 합계를 얻으려면 다시 계산해야 합니다. let으로 선언한 변수에 새 값을 대입하면 오류가 납니다.

    타입사용하는 값
    Int42, -7 같은 정수 (I64와 같은 타입)
    Float2.5 같은 실수 (F64와 같은 타입)
    Booltrue, false
    String"hello" 같은 문자열
    Unit결과가 없는 함수의 반환 타입; 값은 ()

    정수 리터럴은 기본적으로 Int, 실수 리터럴은 Float입니다. 타입이 지정된 자리에서는 그 타입에 맞게 읽습니다. 정수는 I8, I16, I32, I64 및 음수가 없는 U8, U16, U32, U64를 선택할 수 있습니다. 실수는 F32와 F64가 있습니다.

    +, -, *, /로 계산하고 정수의 나머지는 %로 구합니다. Int끼리의 나눗셈은 정수 결과를 냅니다. 소수 결과가 필요하면 예제처럼 먼저 float(...)로 변환하세요. i32(...), u8(...), f32(...) 등으로 원하는 숫자 타입을 명시적으로 선택할 수 있습니다. 변환할 수 없는 범위의 값은 오류가 납니다.

    다른 숫자 타입은 자동으로 섞이지 않습니다. 다음 코드는 의도적으로 잘못 작성했습니다.

    fn main() {
    let wide: I64 = 7;
    let narrow: I32 = wide;
    println(narrow);
    }
    터미널 창
    xen check numeric_error.xen

    expected I32라는 오류가 납니다. let narrow: I32 = i32(wide);로 수정하세요.

    정수의 +, -, *는 타입의 범위를 넘으면 값을 되감습니다. 큰 계산에서 범위를 고려하세요. 0으로 나누기와 최솟값을 -1로 나누기는 실행 오류입니다.

    ==, !=, <, <=, >, >=로 비교하면 Bool이 됩니다. 조건은 &&, ||, !로 조합합니다. &&와 ||는 왼쪽 값만으로 결과가 정해지면 오른쪽을 실행하지 않습니다. // 뒤에는 해당 줄의 주석을 적습니다.

    같은 블록에서 이름을 두 번 선언할 수 없습니다. 안쪽 { ... } 블록에서는 바깥 변수와 같은 이름을 새로 선언할 수 있으며, 블록을 나가면 바깥 이름이 다시 보입니다.

    자료형 선택, 숫자 변환 오류, 타입 추론의 경계는 다음 장 자료형과 형 변환에서 예제로 다룹니다.