존재하지 않는 객체 다루기

명령줄로부터 이름을 입력받자. 명령줄에 아무것도 명시되지 않은 경우를 설명해야한다. 우리에게 Ceylon 에서 어떻게 null 값이 처리되는지 탐구할 수 있는 기회를 준 것이다. 아마도 Java 나 C# 에서 사용되는 것과 꽤 다를 것이다.

여기 지나치게 장황한 예제를 살펴보자.

1
2
3
4
5
6
7
8
9
10
11
12
"Print a personalized greeting"
void hello() {
String? name = process.arguments.first;
String greeting;
if (exists name) {
greeting = "Hello, ``name``!";
}
else {
greeting = "Hello, World!";
}
print(greeting);
}

String? 타입은 namenull 값을 가질 수 있다는 것을 가리킨다. 그러면 이름이 ‘null’ 이 아닌 경우로부터 이름이 null 인 경우를 분리하기 위해 if (exists ...) 제어 구문을 사용한다.

아래처럼 if (exist ...) 제어 구문안에 지역 변수 name 을 선언하여 코드를 축약하는 것은 가능하다.

1
2
3
4
5
6
7
8
9
String greeting;
if (exists name =
process.arguments.first) {
greeting = "Hello, ``name``!";
}
else {
greeting = "Hello, World!";
}
print(greeting);

if (exist ...) 구문 밖에서 유용하게 name 을 실제로 사용할 수 없기 때문에, 이 것은 대부분 경우에 선호되는 스타일이다. (그러나 이렇게해도 코드 작성하는 것은 거의 줄어들지 않는다.)

Share Comments