Created at : 2025-01-09 20:04
Auther: Soo.Y


πŸ“λ©”λͺ¨

1. ν•¨μˆ˜ μ •μ˜

Dartμ—μ„œ ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜λ €λ©΄ returnType functionName(parameters) ν˜•μ‹μ„ μ‚¬μš©

  • κΈ°λ³Έ ν˜•μ‹: λ°˜ν™˜ 값이 μžˆλŠ” ν•¨μˆ˜
  • λ°˜ν™˜ 값이 μ—†λŠ” ν•¨μˆ˜: λ°˜ν™˜ νƒ€μž…μ„ void둜 λͺ…μ‹œ
  • ν•¨μˆ˜ 본문은 μ€‘κ΄„ν˜Έ {}둜 감쌈

μ˜ˆμ‹œ)

int add(int a, int b) {
  return a + b;
}
 
void printMessage(String message) {
  print(message);
}
 

μ‹€μŠ΅λ¬Έμ œ 1 두 숫자의 μ°¨λ₯Ό κ³„μ‚°ν•˜λŠ” ν•¨μˆ˜λ₯Ό μž‘μ„±ν•˜μ„Έμš”.

int subtract(int a, int b) {
   return a - b;
}

μ‹€μŠ΅λ¬Έμ œ 2 μž…λ ₯ λ¬Έμžμ—΄μ„ λ°›μ•„ κ·Έ 길이λ₯Ό 좜λ ₯ν•˜λŠ” ν•¨μˆ˜λ₯Ό μž‘μ„±ν•˜μ„Έμš”.

int cal_length(String text) {
	print('Length: ${text.length}');
}

1.1 ν•¨μˆ˜ 이름 κ·œμΉ™

  1. μ†Œλ¬Έμžλ‘œ μ‹œμž‘
    • ν•¨μˆ˜ 이름은 항상 μ†Œλ¬Έμžλ‘œ μ‹œμž‘ν•΄μ•Ό 함
    • 예: getName(), calculateSum().
  2. 단어 κ°„ 연결은 camelCase μ‚¬μš©
    • ν•¨μˆ˜ 이름이 μ—¬λŸ¬ λ‹¨μ–΄λ‘œ 이루어진 경우, 첫 λ‹¨μ–΄λŠ” μ†Œλ¬Έμžλ‘œ μ‹œμž‘ν•˜κ³  이후 λ‹¨μ–΄μ˜ 첫 κΈ€μžλŠ” λŒ€λ¬Έμžλ‘œ μž‘μ„±.
    • 예: getUserInfo(), calculateTotalPrice().
  3. 특수 문자 μ‚¬μš© κΈˆμ§€
    • ν•¨μˆ˜ 이름에 곡백, ν•˜μ΄ν”ˆ(-), λ˜λŠ” 기타 특수 문자λ₯Ό μ‚¬μš©ν•  수 μ—†μŒ.
    • λŒ€μ‹  밑쀄(_)은 μ‚¬μš© κ°€λŠ₯ν•˜μ§€λ§Œ Dartμ—μ„œλŠ” 일반적으둜 camelCaseλ₯Ό ꢌμž₯함.
  4. 숫자둜 μ‹œμž‘ κΈˆμ§€
    • ν•¨μˆ˜ 이름은 숫자둜 μ‹œμž‘ν•  수 μ—†μŒ.
    • 예: 1calculateSum() (잘λͺ»λœ 예).
  5. ν‚€μ›Œλ“œ μ‚¬μš© κΈˆμ§€
    • class, void, if λ“± Dart의 μ˜ˆμ•½μ–΄(ν‚€μ›Œλ“œ)λŠ” ν•¨μˆ˜ μ΄λ¦„μœΌλ‘œ μ‚¬μš©ν•  수 μ—†μŒ.

2. Named parameters

Dartμ—μ„œλŠ” ν•¨μˆ˜ 호좜 μ‹œ λ§€κ°œλ³€μˆ˜λ₯Ό μ΄λ¦„μœΌλ‘œ 전달할 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” λ§€κ°œλ³€μˆ˜μ˜ μˆœμ„œμ— ꡬ애받지 μ•Šλ„λ‘ ν•©λ‹ˆλ‹€.

  • Named ParameterλŠ” μ€‘κ΄„ν˜Έ {}둜 λ¬ΆμŠ΅λ‹ˆλ‹€.
  • 기본값을 μ„€μ •ν•˜κ±°λ‚˜ required ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ˜ˆμ‹œ)

void greet({required String name}) {
  print('Hello, $name.');
}

μ‹€μŠ΅ 문제 1 이름과 λ‚˜μ΄λ₯Ό μž…λ ₯λ°›μ•„ λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜λŠ” ν•¨μˆ˜λ₯Ό μž‘μ„±ν•˜μ„Έμš”. λ‚˜μ΄κ°€ μž…λ ₯λ˜μ§€ μ•ŠμœΌλ©΄ β€œμ•Œ 수 μ—†μŒβ€μœΌλ‘œ 좜λ ₯ν•˜μ„Έμš”.

void printNameAge({required String name, String age = "unknown"}) {
  print("Hello, my name is $name, I am $age");
}
 
void main() {
  printNameAge(name: "Soyoung");
}

μ‹€μŠ΅ 문제 2 이름과 점수λ₯Ό μž…λ ₯ λ°›μ•„ ν•™μƒμ˜ 성적을 좜λ ₯ν•˜λŠ” ν•¨μˆ˜λ₯Ό μž‘μ„±ν•˜μ„Έμš”. μ μˆ˜λŠ” κΈ°λ³Έ κ°’μœΌλ‘œ 50을 μ‚¬μš©ν•˜μ„Έμš”.

void printNameScore({required Sting name, double score = 50}){
	print("Name : $name, score : $score");
}

3. Positional parameters

Dartμ—μ„œλŠ” 선택적인 μœ„μΉ˜ λ§€κ°œλ³€μˆ˜λ„ μ§€μ›ν•©λ‹ˆλ‹€. [] μ•ˆμ— λ§€κ°œλ³€μˆ˜λ₯Ό μ •μ˜ν•˜λ©΄ 선택 사항이 λ©λ‹ˆλ‹€.

μ˜ˆμ‹œ)

void describe(String name, [int? age, String? city]) {
  print('Name: $name');
  if (age != null) print('Age: $age');
  if (city != null) print('City: $city');
}
 
// or
 
void describe(String name, [int? age = null, String? city = null]) {
  print('Name: $name');
  print('Age: $age');
  print('City: $city');
}
 

μ‹€μŠ΅λ¬Έμ œ 1 μ‚Όκ°ν˜•μ˜ λ°‘λ³€κ³Ό 높이λ₯Ό λ°›μ•„ 면적을 κ³„μ‚°ν•˜λŠ” ν•¨μˆ˜λ₯Ό μž‘μ„±ν•˜μ„Έμš”. λ°‘λ³€κ³Ό 높이가 μ œκ³΅λ˜μ§€ μ•ŠμœΌλ©΄ κΈ°λ³Έκ°’ 1을 μ‚¬μš©ν•˜μ„Έμš”.

void calTriangleArea([double base = 1, double height = 1]) {
	print("Area : ${0.5 * base * height}");
}
 
void main() {
	calTriangleArea(2, 2);
}

4. QQ Operator

QQ μ—°μ‚°μž ??λŠ” null 값을 μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€. ??λ₯Ό 톡해 null λŒ€μ‹  기본값을 μ œκ³΅ν•  수 μžˆλ‹€.

  • λ¬ΌμŒν‘œ(?) : λ³€μˆ˜λ‚˜ νƒ€μž… 뒀에 λ¬ΌμŒν‘œλ₯Ό 뢙이면 κ·Έ λ³€μˆ˜λŠ” null 값을 κ°€μ§ˆ 수 μžˆλ‹€λŠ” μ˜λ―Έμ΄λ‹€.
String? name; // name λ³€μˆ˜λŠ” null일 수 μžˆμŠ΅λ‹ˆλ‹€.
  • λ¬ΌμŒν‘œ 2개(??) : λ¬ΌμŒν‘œ 2개λ₯Ό μ‚¬μš©ν•˜λ©΄ 널 병합 μ—°μ‚°μžλ‘œ μ™Όμͺ½ μ—°μ‚°μžκ°€ 널이면 였λ₯Έμͺ½ ν”Όμ—°μ‚°μžλ₯Ό λ°˜ν™˜ν•œλ‹€.
String? name;
print(name ?? 'Unknown'); // name이 null이면 'Unknown'을 좜λ ₯ν•©λ‹ˆλ‹€.
String capitalizeName(String? name) {
	if ( name != null) {
		return name.toUpperCase();
	}
	return 'ANON';
}
 
// or
 
String capitalizeName(String? name) +> name != null ? name.toUpperCase() : "ANON";
 
// or
 
String capitalizeName(String? name) +> name?.toUpperCase() ?? "ANON";
  • ??= λŠ” μ’Œλ³€μ— μžˆλŠ” ν”Όμ—°μ‚°μžκ°€ 널이면 μš°λ³€μ— μžˆλŠ” ν”Όμ—°μ‚°μžλ‘œ ν• λ‹Ήν•˜λΌλŠ” μ—°μ‚°μžμ΄μ΄λ‹€.
void main() {
	String? name;
	name ??= "Sooyoung";
	print(name); // Sooyoung
}

μ‹€μŠ΅ 문제 1 : μ‚¬μš©μžμ˜ 이메일을 λ°›μ•„ null일 경우 β€œμ΄λ©”μΌ μ—†μŒβ€μ„ 좜λ ₯ν•˜μ„Έμš”.

print(${email} ?? "이메일 μ—†μŒ"); μ•„λ‹ˆκ³  print(email ?? "이메일 μ—†μŒ");라고 μž‘μ„±ν•˜λŠ” μ΄μœ λŠ” λ¨Όμ € email λ³€μˆ˜κ°€ 널인지 μ•„λ‹Œμ§€ νŒλ‹¨ν•œ λ‹€μŒμ— print문이 μ‹€ν–‰λ˜κΈ° λ•Œλ¬Έμ΄λ‹€.

void emailAddress([String email]) {
	print(email ?? "이메일 μ—†μŒ");
}
 
void main() {
	emailAddress();
}

λ¬Έμžμ—΄λ‘œ κ΅¬μ„±ν•˜κ³  μ‹ΆμœΌλ©΄ μ•„λž˜μ™€ 같이 μž‘μ„±ν•œλ‹€.

void emailAddress([String? email]) {
  print("λ‹Ήμ‹ μ˜ 이메일은 ${email ?? '이메일 μ—†μŒ'}μž…λ‹ˆλ‹€.");
}
 
void main() {
  emailAddress();
}

5. Typedef

TypedefλŠ” λ³΅μž‘ν•œ ν•¨μˆ˜ νƒ€μž…μ— 별칭을 μ œκ³΅ν•˜λŠ”λ° μ‚¬μš©ν•©λ‹ˆλ‹€.

List<int> reverseListOfNumbers(List<int> list) {
	var reversed = list.reversed;
	return reversed.toList();
}
 
// apply Typedef below
 
typedef ListOfInts = List<init>;
 
ListOfInts reverseListOfNumbers(ListOfInts list) {
	var reversed = list.reversed;
	return reversed.toList();
}
 

πŸ“œμΆœμ²˜(μ°Έκ³  λ¬Έν—Œ)


πŸ”—μ—°κ²° λ¬Έμ„œ

2일차 4일차