국물 바라― 바라로 국물 시어머니를 설치해 봐--

6526 단어 탕파glibvala
Qita를 고추냉이로 뜯어보다가 @Nemesis씨의'Java로 찌개 시어머니 해보세요. 기사를 읽었다.자칭 지브리의 팬으로서 저도 이곳에서 투고하여 경의를 표하고 싶습니다.아마 아무도 못 쓰는 초소형 언어Vala...

코드


yubaba.vala
public class Yubaba {
    public static int main (string[] args) {
        stdout.printf ("契約書だよ。そこに名前を書きな。\n");

        string name = stdin.read_line ();
        stdout.printf ("フン。%sというのかい。贅沢な名だねぇ。\n", name);

        int new_name_index = GLib.Random.int_range (0, name.char_count ());
        string new_name = name.get_char (name.index_of_nth_char (new_name_index)).to_string ();
        stdout.printf ("今からお前の名前は%sだ。いいかい、%sだよ。分かったら返事をするんだ、%s!!\n", new_name, new_name, new_name);

        return 0;
    }
}
우분투 계열이면...
$ sudo apt install -y valac libglib2.0-dev
에 컴파일러 및 라이브러리 설치
$ valac ./yubaba.vala
$ ./yubaba
이동합니다.

해설


표준 입력 계약

stdout.printf ("契約書だよ。そこに名前を書きな。\n");

string name = stdin.read_line ();
stdout.printf ("フン。%sというのかい。贅沢な名だねぇ。\n", name);
stdin.read_line ()로 이름을 얻고 변수를 대입name.

이름을 빼앗다

int new_name_index = GLib.Random.int_range (0, name.char_count ());
string new_name = name.get_char (name.index_of_nth_char (new_name_index)).to_string ();
밸라의 표준 라이브러리인 GLib에는 Random라는 이름 공간이 있는데, int_range라는 방법이 준비돼 있어서 그걸 사용했다.
시작점(첫 번째 문자)과 끝점name의 문자 수를 매개변수에 전달합니다.주의해야 할 것은 name.length라면 name의 바이트 수를 얻는다는 점name이 전각문자인 상황에서 문자를 정확하게 추출할 수 없기 때문에char_count 방법을 사용한다는 점1이다.new_name_index를 사용하여 꺼낸 1개의 문자는 unichar형(32비트의 Unicde 문자형)이기 때문에string형으로 변환됩니다.

이름 부여

stdout.printf ("今からお前の名前は%sだ。いいかい、%sだよ。分かったら返事をするんだ、%s!!\n", new_name, new_name, new_name);
표준 출력에 새 이름을 표시합니다.new_name, new_name, new_name 너무 지루해서 어쩌지...

실행 결과





아무것도 입력하지 않으면 int_range 방법의 매개 변수가 쌍방이 0이 되어 기점<끝점의 결단이 실패하는 오류를 표시합니다.하지만 앞으로의 처리는 틀리지 않을 거예요. 탕시어머니가 발음할 줄 모르는 이름을 줄 거예요.
동작의 차이 참조여기 전선.

좋은 웹페이지 즐겨찾기