변수와 값
선택한 언어나 버전에는 이 주제가 없어 같은 영역의 시작 페이지를 표시합니다.
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.xen3618.0quantity를 바꾸어도 이미 계산해 둔 total은 자동으로 바뀌지 않습니다. 새로운 합계를 얻으려면 다시 계산해야 합니다. let으로 선언한 변수에 새 값을 대입하면 오류가 납니다.
자주 쓰는 타입
섹션 제목: “자주 쓰는 타입”| 타입 | 사용하는 값 |
|---|---|
Int | 42, -7 같은 정수 (I64와 같은 타입) |
Float | 2.5 같은 실수 (F64와 같은 타입) |
Bool | true, 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.xenexpected I32라는 오류가 납니다. let narrow: I32 = i32(wide);로 수정하세요.
정수의 +, -, *는 타입의 범위를 넘으면 값을 되감습니다. 큰 계산에서 범위를 고려하세요. 0으로 나누기와 최솟값을 -1로 나누기는 실행 오류입니다.
비교와 주석
섹션 제목: “비교와 주석”==, !=, <, <=, >, >=로 비교하면 Bool이 됩니다. 조건은 &&, ||, !로 조합합니다. &&와 ||는 왼쪽 값만으로 결과가 정해지면 오른쪽을 실행하지 않습니다. // 뒤에는 해당 줄의 주석을 적습니다.
같은 블록에서 이름을 두 번 선언할 수 없습니다. 안쪽 { ... } 블록에서는 바깥 변수와 같은 이름을 새로 선언할 수 있으며, 블록을 나가면 바깥 이름이 다시 보입니다.
자료형 선택, 숫자 변환 오류, 타입 추론의 경계는 다음 장 자료형과 형 변환에서 예제로 다룹니다.