다트에서는 모든 데이터가 객체이므로 함수도 객체입니다. 그리고 함수를 대입할 수 있는 객체를 함수 타입이라고 하며 Function으로 선언합니다. 다음 코드에서는 some()이라는 함수를 선언한 후 이 함수를 Function data2라고 선언한 함수 타입 객체에 대입했습니다.// 함수 타입 선언void some() { }Function data2 = some; 이처럼 함수가 객체이므로 다른 객체에 대입하거나 함수의 매개변수, 반환값 등으로 사용할 수 있습니다. 다음 코드에서 testFun() 함수는 매개변수로 함수를 전달받아 함수를 반환합니다. 즉, 매개변수와 반환값이 모두 Function 타입입니다.// 함수를 활용한 예int plus(int no) { return no + 10;}int multi..
전체 글
옵셔널 위치 매개변수도 앞서 살펴본 명명된 매개변수처럼 값은 선택이므로 전달받지 않을 수 있습니다. 그러나 값을 전달할 때는 이름 대신 매개변수가 선언된 순서(위치)에 맞게 호출해야 합니다. 즉, 옵셔널 위치 매개변수로 선언된 함수는 데이터 전달은 자유지만 순서는 맞춰서 호출해야 합니다.void some( [String name = 'hello', int age = 10 ] ) { print('name: $name, age: $age'); some('world', 20);}옵셔널 위치 매개변수를 선언하는 규칙을 정리하면 다음과 같습니다.매개변수들을 대괄호로 묶는다.함수의 마지막 매개변수에만 사용할 수 있다.매개변수에 기본 인자를 설정할 수 있다.그리고 옵셔널 위치 매개변수를 포함하는 함수는 다음과..
함수를 호출할 때는 다음처럼 매개변수의 개수와 타입, 순서에 맞게 데이터를 전달해야 합니다. 그렇지 않으면 오류가 발생합니다.// 함수 호출 예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) { // 함수 이름 중복 오류 }}함수 오버로딩은 왜 지원하지 않는 거죠?함수 오버로딩은 매개변수의 타입이나 개수를 다양하게 만들어서 이름이 같은 함수를 여러 개 만드는 방법입니다. 그런데 다트는 잠시 후에 다룰 '옵셔널 매개변수'라는 기능..