반응형
참고 강좌
function 형식
returnType FunctionName (ParameterType Parameter){ }
- returnType: 무슨 타입으로 리턴하는지
- void: 아무것도 return 하지 않음
- FunctionName: function의 이름
- ParameterType: 전달 받는 파라미터의 타입과 해당 파라미러 이름
void sayHello(String name){ // return void => 아무것도 return 하지 않는다
print("Hello $name nice to meet you!");
}
String sayHello2(String name){ // return String => String 값을 return
return ("Hello $name nice to meet you!");
}
function 호출
- FunctionName(Parameter);
void main() {
sayHello('KyungMi');
print(sayHello2('KyungMi'));
}
생략 가능 문
function이 실행되고 곧바로 return 할 경우 (return 한 줄짜리 function)
1. return 생략 가능
2. 중괄호 생량 가능 ( => 로 대체)
// 생략 전
num puls(num a, num b){
return a+b;
}
// 생략 후
num puls2(num a, num b)=> a+b;
Positional Parameter
: function를 호출할 때 function 정의의 argument 순서와 똑같이 호출해야한다.
named Parameter
: argument 순서와 관계없이 argument 이름들과 value를 같이 적어 호출하면 된다.
💡 사용자가 파라미터를 부를때 정해진 순서를 알고 순서를 지켜서 호출해야하는 어려움 존재
→ 매우 불편, 이를 해결하기 위해 생성
function정의에서 할 일
- 파라미터 argument 에 중괄호 추가
- argument에 대한 null 값을 대비해 처리 필요
- null 값 허용
- default value 정의
- String sayHello({ String name = 'anon', int age = 20, String country = 'korea' }) { }
- null 값 허용하지 않음
- required 사용
(이 함수를 호출할 때 무조건적으로 이 파라미터 값을 넘겨줘야함)
- required 사용
- null 값 허용
호출할 때
print(sayHello(
age: 23,
name: "KyungMi",
country: "Korea"
));
- 좋은 점
- 자동완성으로 argument 이름 쉽게 입력
- type 교정
Optional Positional Parameters
Positional Parameters : 순서를 맞춰야 함
String sayHello(String name, int age, [String? country='korea']){
return "Hello $name, you are $age, and you come from $country";
}
void main(){
print(sayHello("KyungMi", 23));
}
- name, age, country → 순서는 지켜야 함
- country 값은 null을 허용 → null일 경우 ‘korea’
QQ Operator
: function에서 파라미터의 null을 허용하여 null 값이 넘어왔을 때 생기는 문제
- toUpperCase함수는 type이 String이여야만 사용할 수 있는 함수
→ 이때 null 값이 들어왔을 때 nulllsafety 때문에 컴파일 에러 발생
이를 예방할 수 있게 도와주는 operator
- 식 ? true : false
- 식이 true 일 때 → true 실행
- false 일 때 → false 실행
String capitalizeName(String? name) =>
name != null ? name.toUpperCase() : "ANON";
- true ?? false
- 해당 값이 null이 아닐 때 → true 실행
- null일 때 → false 실행
String capitalizeName2(String? name) =>
name?.toUpperCase() ?? "ANON";
?? = → null 일 경우 대입
name ??= ‘nico’;
name이 null 일 경우 nico 대입
typedef
: 사용자가 만드는 데이터 type
- 자료형의 alias를 붙일 수 있음
typedef ListOfInts = List<int>;
ListOfInts reverseListOfNumbers(ListOfInts list){
var reversed = list.reversed;
return reversed.toList();
}
→ 구조화된 데이터를 만들고 싶다면 class를 사용해야함
반응형
'프로그래밍 언어 > Flutter' 카테고리의 다른 글
[Flutter] 1. flutter란? (1) | 2023.12.26 |
---|---|
[Dart] 4. Class (0) | 2023.12.26 |
[Dart] 2. 데이터 타입 (0) | 2023.12.26 |
[Dart] 1. Dart 해보기 (0) | 2023.12.26 |
[Dart] 0. Dart 기본 지식 (1) | 2023.12.21 |