๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Dart/๊ธฐ์ดˆ

[Dart ๊ธฐ์ดˆ] Named Parameter, optional positional parameter

by ๋ฟŒ๋น„ 2024. 8. 2.
728x90

๐Ÿ”ฅ positional parameter  (๊ธฐ๋ณธ์ ์ธ ํŒŒ๋ผ๋ฏธํ„ฐ)

  • ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ด๊ณ  ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค 
  • ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ˆœ์„œ๋Œ€๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉ ํ•œ๋‹ค
  • ํ•˜์ง€๋งŒ, ์ด ๋ฐฉ๋ฒ•์€ argument๊ฐ€ 3๊ฐœ ์ด์ƒ์œผ๋กœ ๋„˜์–ด๊ฐˆ ๋•Œ๋Š” ์š”์†Œ๋“ค์˜ ์ˆœ์„œ๋ฅผ ์žŠ์„ ์ˆ˜๋„ ์žˆ๊ณ  ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ถ€๋ถ„๋งŒ ๋ดค์„ ๋• ๊ฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ค ๊ฑธ ์˜๋ฏธํ•˜๋Š”์ง€ ๋ชจ๋ฅด๋‹ˆ๊นŒ ์ข‹์ง€ ์•Š๋‹ค
 String sayHello3(String name, int age, String country){
  return ("Hello $name, you are $age, and you come from $country");
 };
 
// ํ•จ์ˆ˜ ํ˜ธ์ถœ 
sayHello3('potato',19,'cuba');

Dart์—์„œ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ๋•Œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ ํƒ์ ์œผ๋กœ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ์ˆœ์„œ๋Œ€๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค
์ด๋ฅผ ์œ„ํ•ด Dart์˜ function์€  named parameter์™€ Optional positional parameters๋ฅผ ์ œ๊ณตํ•œ๋‹ค

๐Ÿ”ฅNamed Parameter

  • ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ๋•Œ, ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ด๋ฆ„์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค
  •  Named Parameter์—๋Š” ๊ธฐ๋ณธ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ธฐ๋ณธ๊ฐ’์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ํ•„์ˆ˜์ ์œผ๋กœ ์ „๋‹ฌ๋˜์–ด์•ผ ํ•œ๋‹ค
  •  ํ˜ธ์ถœํ•  ๋•Œ argument๋Š” ์ˆœ์„œ ์ƒ๊ด€์—†์ด ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„๊ณผ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋™์ผํ•˜๊ฒŒ ํ•ด ์ฃผ๊ณ ,  ํŒŒ๋ผ๋ฏธํ„ฐ ๋“ค์€ ์ค‘๊ด„ํ˜ธ{}๋กœ ๊ฐ์‹ธ์ฃผ๋ฉด ๋œ๋‹ค
โ€ป Dart์˜ Null safety์— ๋”ฐ๋ผ ์ด๋ฅผ ์œ„ํ•ด 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค 
1. default value : ํ•ด๋‹น ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ธฐ๋ณธ๊ฐ’์„ ์ฃผ์–ด์„œ null์ผ ๋•Œ๋Š” ๊ธฐ๋ณธ ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ง€์ •ํ•ด ์ค€๋‹ค
2. required : ๊ธฐ๋ณธ ๊ฐ’์„ ๋”ฐ๋กœ ์ง€์ •ํ•  ํ•„์š”๊ฐ€ ์—†์„ ๋•Œ, ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ํ•„์ˆ˜ ๊ฐ’์ด ์•„๋‹Œ, ๊ฐ’์ด ์˜ฌ ์ˆ˜๋„  null์ด ์˜ฌ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ช…์‹œํ•ด ์ค€๋‹ค

 

๐Ÿ”ฅ  default value

  • ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์ค‘๊ด„ํ˜ธ{}๋กœ ๊ฐ์‹ธ์ฃผ๊ณ , ํŒŒ๋ผ๋ฏธํ„ฐ ์˜†์—๋Š” =๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•ด ์ค€๋‹ค
  • ํ˜ธ์ถœํ•˜๋Š” ๋ถ€๋ถ„์˜ argument ์—๋Š” ์ˆœ์„œ๋Š” ์ƒ๊ด€์—†์ง€๋งŒ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ด๋ฆ„๊ณผ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ๋™์ผํ•˜๊ฒŒ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค
// ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค์„ {} ๋กœ ๊ฐ์‹ธ์ฃผ๊ณ , ํŒŒ๋ผ๋ฏธํ„ฐ ์˜†์—๋Š” ='๊ธฐ๋ณธ๊ฐ’'์„ ์„ค์ • ํ•ด์ค€๋‹ค
String sayHello4({String name = 'nana', int age = 11, String country = 'korea'}){
  return ("Hello $name, you are $age, and you come from $country");
 };

// ์ˆœ์„œ๋Š” ์ƒ๊ด€์—†์ด ์ž๋ฃŒํ˜•(๋ฐ์ดํ„ฐ ํƒ€์ž…๋งŒ ์ •ํ™•ํžˆ ํ•ด์„œ) argument์˜ ์ด๋ฆ„๋งŒ ์ ์–ด์ฃผ๋ฉด ๋œ๋‹ค 
sayHello4(
  age : 19,
  name: 'potato',
  country : 'cuba'
);

๐Ÿ”ฅ  required

  • default value๋ฅผ ์ง€์ •ํ•  ํ•„์š”๊ฐ€ ์—†์„ ๋•Œ required ์‚ฌ์šฉํ•œ๋‹ค 
  • ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ํ•ด๋‹น ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์•ž์— required๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ๋œ๋‹ค
  • required๋กœ ์ง€์ •๋œ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ํ•„์ˆ˜ ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ํ˜ธ์ถœํ•  ๋•Œ ๊ผญ ํ•„์ˆ˜๋กœ argument๋ฅผ ๋„ฃ์–ด์ค˜์•ผ ํ•œ๋‹ค
// ๋ฐ์ดํ„ฐ ํƒ€์ž… ์•ž์— required ๋ฅผ ๋ถ™์—ฌ์ค€๋‹ค 
String sayHello5({required String name, required int age, required String country}){
  return ("Hello $name, you are $age, and you come from $country");
 };
 
 // ํ•จ์ˆ˜ ํ˜ธ์ถœ 
sayHello5(
  age : 19,
  name: 'potato',
  country : 'cuba'
);

// ์•„๋ž˜ ์ฒ˜๋Ÿผ์€ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์—†๋‹ค(ํ•„์ˆ˜ ๊ฐ’ ๋‹ค ๋„ฃ์–ด์ฃผ์–ด์•ผํ•จ)
sayHello5(); 
sayHello5(
    age : 19,
    name: 'potato'
 );

๐Ÿ”ฅ optional positional parameter

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์“ฐ๋Š” positional parameter๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ผ๋ถ€๊ฐ€ ํ•„์ˆ˜๊ฐ€ ์•„๋‹ˆ๊ณ  null ์ผ ์ˆ˜๋„ ์žˆ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค
  • ์‚ฌ์šฉ๋ฒ•์€  ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ ๋Œ€๊ด„ํ˜ธ[]๋ฅผ ๊ฐ์‹ธ๊ณ  ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋’ค์—? ๋ฅผ ๋ถ™์—ฌ์„œ null์ผ ๋•Œ์˜ ๊ธฐ๋ณธ๊ฐ’์„ ์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค
  • ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•์€ ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ–ˆ๋‹ค.. 
// [String? country ='cubo']
String sayHello6( String name,  int age,  [String? country ='cubo']){
  return ("Hello $name, you are $age, and you come from $country");
 };
 
 // ํ•จ์ˆ˜ ํ˜ธ์ถœ
sayHello6('nana',11);

โ€ป Reference

https://nomadcoders.co/ [๋…ธ๋งˆ๋“œ์ฝ”๋” ๊ฐ•์˜ ์ฐธ๊ณ ]

https://dart.dev/language/functions

 

 

 

728x90