⚡ Dart 함수

jino·2023년 3월 18일
0

🚀 Defining a function

String sayHello (String name){
	return "Hello $name nice to meet you";
}

String sayHello (String name) => "Hello $name nice to meet you";

위의 두개의 함수는 똑같음! Java에서의 함수 선언과, js에서의 함수선언의 짬뽕 느낌!

void main(){
	print(sayHello('jino'));
}

🚀 Named Parameters

String sayHello({String name, int age, String country}){
	return "Hello $name, you are $age, and you came from $country";
}

void main(){
	print(sayHello({
    	name : 'jino',
        age : 27,
        country : 'Korea',
    }))
}

위와 같이 이용할 때 null safety를 보장하기 위해 다음과 같은 2가지 방법이 있다.

// default 값을 정해주는 방식
String sayHello({String name = 'jino', int age = 23, String country = 'Korea'}){
	return "Hello $name, you are $age, and you came from $country";
}

// required를 지정해주는 방식 (default값이 아닌 무조건 실제 값이 들어와야 할 때)
String sayHello({
	required String name, required int age, required String country
}){
	return "Hello $name, you are $age, and you came from $country";
}

🚀 Optional Positional Parameters

String sayHello (String name, int age, [String? country = 'USA']) => 
	'Hello $name, you are $age and you are from $country';
    
void main(){
	sayHello('nico', 12);
}

대괄호로 감싸주고, country가 있을 수도 있고 없을 수도 있는데, 없다면 default value로 'USA'를 부여해라!

🚀 QQ Operator

String capitalizeName(String name) => {
	if (name !== null){
    	return name.toUpperCase();
    }
	return 'NONE';
}

// fat arrow version

String capitalizeName(String name) => name !== null ? name.toUpperCase() : 'NONE';

String capitializeName(String name) => name?.toUpperCase() ?? 'NONE';

void main(){
	capitalizeName('jino');
    capitalizeName();
    
    String? age;
    age ??= 27;
    // if age is null, give age value 27;
}

🚀 Typedef

typedef ListOfInts = List<int>;

ListOfInts reverseListOfNumbers(ListOfInts list){
	var reversed = list.reversed;
    return reversed.toList();
}

void main(){
	print(reverseListOfNumbers([1,2,3]));
    // [3, 2, 1]
}

===================================================

typedef UserInfo = Map<String, String>;

String sayHi(Map<String, String> userInfo){
	return "Hi ${userInfo['name']}"
}

위와 같이 정형화된 구조체를 만들고 싶을 경우 위처럼 typedef을 해주기보다는 class를 만들어 활용하는 것이 더 좋음!!
profile
어제보다 오늘 더 성장하는 디벨로퍼

0개의 댓글