Dartda ixtiyoriy parametrlar
Dartda ikki xil funksiya parametrlari mavjud: positional
va named
.
Ixtiyoriy pozitsion parametrlar
Pozitsion parametrlar sizga tanish bo'lgan parametrlardir:
int sumUp(int a, int b, int c) { return a + b + c; } // ··· int total = sumUp(1, 2, 3);
Dart yordamida siz ushbu pozitsion parametrlarni qavs ichiga oʻrash orqali ixtiyoriy qilishingiz mumkin:
int sumUpToFive(int a, [int b, int c, int d, int e]) { int sum = a; if (b != null) sum += b; if (c != null) sum += c; if (d != null) sum += d; if (e != null) sum += e; return sum; } // ··· int total = sumUpToFive(1, 2); int otherTotal = sumUpToFive(1, 2, 3, 4, 5);
Ixtiyoriy pozitsion parametrlar har doim funksiya parametrlari roʻyxatida oxirgi boʻladi. Agar siz boshqa standart qiymat kiritmasangiz, ularning standart qiymati null bo'ladi:
int sumUpToFive(int a, [int b = 2, int c = 3, int d = 4, int e = 5]) { // ··· } // ··· int newTotal = sumUpToFive(1); print(newTotal); // <-- prints 15 Code example
Birdan joinWithCommas()
beshgacha butun sonni qabul qiladigan, so'ngra vergul bilan ajratilgan raqamlar qatorini qaytaradigan funksiyani amalga oshiring. Funktsiya chaqiruvlari va qaytarilgan qiymatlarga ba'zi misollar:
String joinWithCommas(int a, [int b, int c, int d, int e]) { var total = '$a'; if (b != null) total = '$total,$b'; if (c != null) total = '$total,$c'; if (d != null) total = '$total,$d'; if (e != null) total = '$total,$e'; return total; }
joinWithCommas(1) joinWithCommas(1, 2, 3) joinWithCommas(1, 1, 1, 1, 1)
'1' '1,2,3' '1,1,1,1,1'
Figurali qavs sintaksisidan foydalanib, siz nomlari bo'lgan ixtiyoriy parametrlarni belgilashingiz mumkin.
void printName(String firstName, String lastName, {String suffix}) { print('$firstName $lastName ${suffix ?? ''}'); } // ··· printName('Avinash', 'Gupta'); printName('Poshmeister', 'Moneybuckets', suffix: 'IV');
Siz kutganingizdek, ushbu parametrlarning qiymati default holat bo'yicha null, lekin siz standart qiymatlarni berishingiz mumkin:
void printName(String firstName, String lastName, {String suffix = ''}) { print('$firstName $lastName $suffix'); }
Funktsiya bir vaqtda ham ixtiyoriy pozitsion, ham ixtiyoriy nomlangan parametrlarga ega bo'lishi mumkin emas.
copyWith()
MyDataObject sinfiga misol metodini qo'shing . U uchta nomlangan parametrni olishi kerak:
int newInt String newString double newDouble
Chaqirilganda , oldingi parametrlardan (agar mavjud bo'lsa) ob'ektning xususiyatlariga ko'chirilgan ma'lumotlar bilan joriy misol asosida copyWith()
yangisini qaytarish kerak . MyDataObject
Misol uchun, agar newInt
null bo'lmasa, uning qiymatini ga ko'chiring anInt
.
class MyDataObject { final int anInt; final String aString; final double aDouble; MyDataObject({ this.anInt = 1, this.aString = 'Old!', this.aDouble = 2.0, }); // copyWith metodingizni shu yerga qo'shing: }
//copyWith bizga T ni nusxalash va parametr argumentlari o'rniga //qayta qiymat yozish imkonini beradi. class _HomePageState extends State<HomePage> { List<Product> products = []; @override void initState() { super.initState(); Product sixSeaterDiningTableBrown = Product( id: "0", name: "6 Seater Dining Table", color: Colors.brown, ); Product sixSeaterDiningTableBlack = sixSeaterDiningTableBrown.copyWith(color: Colors.black, id: "1"); products.add(sixSeaterDiningTableBrown); products.add(sixSeaterDiningTableBlack); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("Hello, copyWith!"), ), body: ListView( children: products .map((Product product) => ListTile( trailing: Container( width: 14, height: 14, color: product.color, ), title: Text(product.name), subtitle: Text(product.id), )) .toList()), ); } }
Maqola yoqqan bo'lsa do'stlaringizga ulashing va kanalimizga a'zo bo'ling:
Avtor: Mamasodiqov M
Kanal: Flutter Blogs