콘솔 입출력과 포매팅
print, println, input 문장과 자리표시자 규칙을 설명합니다.
Wave Foundation
입출력 문장
Wave는 print, println, input을 콘솔 입출력 문장으로 제공합니다.
fun main() {
var count: i32 = 0;
input("{}", count);
print("count = ");
println("{}", count);
}
각 문장은 ;로 끝납니다. 첫 번째 인자는 반드시 문자열 리터럴이어야 합니다. 변수나 계산한 문자열을 format 인자로 사용할 수 없습니다.
자리표시자
정확히 두 글자인 {}만 자리표시자입니다.
println("name = {}, score = {}", name, score);
자리표시자 수와 뒤따르는 식의 수는 정확히 같아야 합니다. 수가 다르면 문법 오류입니다.
println("{} {}", one); // 오류: 자리표시자 2개, 값 1개
println("plain text", one); // 오류: 자리표시자 없음, 값이 남음
다른 형태의 중괄호는 일반 텍스트로 남습니다. 이 문법에는 이름이나 번호가 붙은 자리표시자가 없습니다.
print와 println
print는 포매팅한 텍스트를 그대로 출력하고 println은 줄바꿈을 덧붙입니다.
print("loading...");
println("done");
포매팅 인자에는 정수, 부동소수점, 문자열과 포인터 같은 스칼라 값을 사용합니다. 배열과 구조체는 포매팅 인자로 사용할 수 없습니다.
input 대상
input은 읽은 값을 대상에 저장하므로 format 뒤의 모든 식은 쓰기 가능한 위치여야 합니다.
var number: i32 = 0;
input("{}", number);
변수, 필드와 역참조한 저장 위치를 대상으로 사용할 수 있습니다. 리터럴과 계산 결과는 입력 대상으로 사용할 수 없습니다.
입력값을 요청한 타입으로 모두 변환하지 못하면 프로그램은 실패 상태로 종료합니다.
런타임 경계
이 문장들은 hosted 환경의 콘솔 입출력을 사용합니다. 프리스탠딩 환경에서는 커널이나 장치가 제공하는 입출력을 함수 또는 FFI 경계로 정의해야 합니다.