옵셔널 위치 매개변수도 앞서 살펴본 명명된 매개변수처럼 값은 선택이므로 전달받지 않을 수 있습니다. 그러나 값을 전달할 때는 이름 대신 매개변수가 선언된 순서(위치)에 맞게 호출해야 합니다. 즉, 옵셔널 위치 매개변수로 선언된 함수는 데이터 전달은 자유지만 순서는 맞춰서 호출해야 합니다.void some( [String name = 'hello', int age = 10 ] ) { print('name: $name, age: $age'); some('world', 20);}옵셔널 위치 매개변수를 선언하는 규칙을 정리하면 다음과 같습니다.매개변수들을 대괄호로 묶는다.함수의 마지막 매개변수에만 사용할 수 있다.매개변수에 기본 인자를 설정할 수 있다.그리고 옵셔널 위치 매개변수를 포함하는 함수는 다음과..
Flutter
함수를 호출할 때는 다음처럼 매개변수의 개수와 타입, 순서에 맞게 데이터를 전달해야 합니다. 그렇지 않으면 오류가 발생합니다.// 함수 호출 예void some(int a, String b, bool c) {}main() { some(); // 오류 some('hello', true, 10); // 오류 some(10, 'hello', true);} 그런데 다트에서는 함수의 매개변수를 선택적으로 지정하는 옵셔널을 지원합니다. 옵셔널은 다음 2가지 형태로 제공합니다. 차례대로 알아보겠습니다.명명된 매개변수(named parameter)옵셔널 위치 매개변수(optional positional parameter)명명된 매개변수란?보통 함수를 호출할 때는 함수에 선언된 매개변수의 개수와 타입, 순서에 맞게..
함수 선언 위치 알아보기다트에서 함수는 톱 레벨과 클래스의 멤버 그리고 다른 함수 내에 선언할 수 있습니다.// 함수 선언 위치void some1() {}void some2() { void some3() { } some3();}class MyClass { void some4() { }} 또한 다트에서는 함수 오버로딩을 제공하지 않습니다.// 함수 오버로딩 지원 안 함class MyClass { void some() { } void some(int a) { // 함수 이름 중복 오류 }}함수 오버로딩은 왜 지원하지 않는 거죠?함수 오버로딩은 매개변수의 타입이나 개수를 다양하게 만들어서 이름이 같은 함수를 여러 개 만드는 방법입니다. 그런데 다트는 잠시 후에 다룰 '옵셔널 매개변수'라는 기능..
다트는 널 안전성을 지원하므로 널 허용 변수를 이용할 때 널에 안전한 코드를 작성할 수 있도록 몇 가지 연산자를 제공합니다. 여기서는 이러한 널 안전성과 관련한 연산자를 알아봅니다.널인지 점검할 때 -! 연산자어떤 변수가 널인지 점검할 때는 ! 연산자를 사용합니다. 변수 이름 뒤에 ! 연산자를 추가하면 이 변숫값이 널일 때 런 타임 오류가 발생합니다. 널 불허 변수 뒤에 추가할수도 있지만 널 불허 변수에는 널을 대입할 수 없으므로 의미가 없습니다. 밑에 있는 코드에서 20으로 초기화한 널 허용 변수 a1은 main() 함수 첫 줄에서 ! 연산자를 붙였을때는 괜찮지만, null을 대입한 후 마지막 줄에서 ! 연산자를 붙였을 때는 오류가 발생합니다. 그 앞 줄에서 a1에 null을 대입했기때문입니다.// 널..