devlog_zz

[Dart] 3. 함수, 연산자 본문

Front End/Flutter

[Dart] 3. 함수, 연산자

YJ_SW 2022. 5. 20. 14:03
728x90

3. 함수, 연산자

함수도 객체

  1. 변수가 함수를 참조할 수 있다.
  2. 함수의 인자로 함수를 전달할 수 있다.
  3. 선택 매개변수위치적 선택 매개변수
  4. 이름 있는 선택 매개변수
  5. 익명 함수 및 람다

1. 변수가 함수를 참조할 수 있다.

var name = getName();

getName () {
	return 'Kim';
}

2. 함수의 인자로 함수를 전달할 수 있다.

int multi(int a, int b) {
	return a*b;
}

int add(int a, int b) {
	return a+b;
}
int sub(int a, int b) {
	return a-b;
}

multi(add(a,b),sub(a,b)) // 인자로 함수 사용 가능

3-1 . 선택 매개변수 - 이름 있는 선택 매개변수

함수 호출 시 매개변수에 인자 값을 넘겨줄 때 매개변수명을 이용하여 인자 값을 넘겨줄 수 있다.

매개변수명으로 인자 값을 넘겨줄 매개변수는 {} 로 감싸야 한다.

String getAddress(String city, {String district, String zipCode = '111222'}) {
	return '$city시 $district구 $zipCode';
}

main() {
	print('${getAddress('서울',district:'강남')}');
	print('${getAddress('서울',district:'강남',zipCode:'012345')}');
}

서울시 강남구 111222
서울시 강남구 012345

3-2 . 선택 매개변수 - 위치적 선택 매개변수

위치적 선택 매개변수는 미리 초기값을 지정해놓고 함수 호출 시 해당 매개변수에 인자 값을 넘겨주지 않으면 초기값을 사용함

선언 방법 []로 감싸야 한다.

String getAddress(String city, [String district = '강남', String zipCode = '111222']) {
	return '$city시 $district구 $zipCode';
}

main() {
	print('${getAddress('서울')}');
	print('${getAddress('서울','서초')}');
}

서울시 강남구 111222
서울시 강남구 012345

필수 매개변수는 꼭 인자값을 줘야하고 매개변수 위치를 꼭 고려해야 한다.

4. 익명 함수 및 람다식

int add(int a, int b) {
	return a + b;
}

var multi = (_a, _b) { // 익명함수
	return _a + _b;
}

sub(_a,_b) => _a - _b; // 람다 함수

연산자

~/ 몫을 구하는 연산자

% 나머지 구하는 연산자

타입 검사 연산자

as : 형변환

is : 특정 타입이면 true

main() {
	Employee employee = Employee();
	Student student = Student();

	Person person1 = employee as Person;
	Person person2 = student as Person;

person1.name  // employee
person2.name // student

}

조건적 멤버 접근

employee?.name

null이면 null을 리턴하고 아니면 우항의 값을 리턴함

[employee.name](<http://employee.name>) ?? 'new name'

null이 아니면 좌항 값, null이면 우항 값 리턴

캐스캐이드 표기법

// 캐스캐이드 표기법 사용
Employee employee = Employee()
	..name = 'Kim'
	..setAge(25)
  ..showInfo();

// 사용하지 않으면
employee.name = 'Park';
employee.setAge(30);
employee.showInfo();

출처 : https://brunch.co.kr/brunchbook/dartforflutter 스터디하며 정리한 글입니다. 감사합니다.

728x90
Comments