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 . MyDataObjectMisol uchun, agar newIntnull 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