본문 바로가기
Language/Dart

Functions

by mansoorrr 2023. 12. 6.
  • void main() 함수 안에 함수나 코드가 들어있어야 동작함

void

  • 아무것도 리턴하지 않는다.
  • void 안에 return을 명시하면 에러가 난다.
#void: 함수 내에 return하지 않음
void Hello(String name) {
	print("My name is $name")
}

#void - return: error 발생
void Hello(String name) {
	return("My name is $name")
}

#void > String으로 변경, return 유지: String을 return 하는 함수가 됨
String Hello(String name) {
	return("My name is $name")
}

#곧바로 리턴하는 경우 fat arrow return을 사용 가능
String Hello(String name) => "My name is $name"

main 안에서 Hello함수 실행

 

Named Parameter

  • 많은 파라미터를 담아서 보내고 싶을때 유용
  • 파라미터의 위치를 기억하고 싶지 않을때 사용
#보통의 함수: 이름, 나이, 국적을 나타내고자 할때
String myInfo(String name, int age, String country) {
	return("My name is $name. i'm $age, i'm from $country");
}

void main() {
	print(myInfo("mansoor", 20, "UK"));
}

 

  • 정의한 함수의 파라미터들의 위치를 기억해야함
  • main안에서 함수가 실행되면 파라미터가 뭘 의미하는지 모름
  • 정의한 함수의 파라미터를 {}로 감싸줌
  • main안에서 함수가 실행될때 "파라미터: 값" 형식으로 작성해줌(위치 무관)
#named parameter적용
String myInfo({String name, int age, String country}) {
  return "My name is $name, i am $age, i am $country";
} 

void main() {
  print(
    myInfo(age: 20, country: "UK", name: "mansoor")
    );
}

 

  • 하지만 이렇게 써도 문제 발생
  • null safety가 발생되며 값을 넣어 주지 않을 경우 에러가 난다는 경고가 나타남
  • 따라서 파라미터에 default값을 넣어주거나 required를 설정
#named parameter적용 & default값 적용
String myInfo({String name="dhsl", int age=22, String country="america"}) {
  return "My name is $name, i am $age, i am $country";
} 

#named parameter적용 & required 적용
String myInfo({required String name, required int age, required String country}) {
  return "My name is $name, i am $age, i am $country";
} 

void main() {
  print(
    myInfo(age: 20, country: "UK", name: "mansoor")
    );
}

 

Optional Positional Parameter

  • required로 설정하지 않고 main안에서 정의한 함수의 파라미터를 쓰고 싶지 않을 경우
  • 대괄호로 감싸주고 null이 될 수 있음을 명시해 준다.
#Optional Positional Parameter
String myInfo(
  String name,
  int age,
  [String? country="ghsl"]
) {
  return "My name is $name, i am $age, i am $country";
} 


void main() {
  print(
    myInfo("mansoor", 20) #country를 명시하지 않아도 실행됨
    );
}

'Language > Dart' 카테고리의 다른 글

Class  (0) 2023.12.07
Types  (2) 2023.12.06
Variables  (0) 2023.12.04