Kimdan
|
Hech kimdan
|
Ba'zilarga
|
Ba'zi
|
Yo'q
|
Hech kimga
|
Yo'q
|
Yo'q
|
Ya'ni, biz bilamizki, None ustidan xaritalash har doim None ga olib keladi va Some bo'yicha xaritalash f qanday chaqiruvni qaytarishiga qarab, yo Some yoki None ga olib keladi. Biz bundan foydalanamiz va flatMap-ga aniqroq turlarni berish uchun haddan tashqari yuklangan imzolardan foydalanamiz:
interfeys Variant < T > {
flatMap < U > ( f : ( qiymat : T ) => Yo'q ) : Yo'q flatMap < U > ( f : ( qiymat : T ) => Variant < U > ) : Variant < U >
getOrElse ( qiymati : T ) : T
}
sinf Ba'zilari < T > asboblar Variant < T > { konstruktor ( xususiy qiymat : T ) {} flatMap < U > ( f : ( qiymat : T ) => Yo'q ) : Yo'q flatMap < U > ( f : ( qiymat : T ) => Ayrimlari < U > ) : Ayrimlari < U > flatMap < U > ( f : ( qiymat : T ) => Variant < U > ) : Variant < U > {
qaytish f ( bu . qiymat )
}
getOrElse () : T { qaytish bu . qiymat
}
}
sinf Yo'q asboblar Variant < hech qachon > {
flatMap () : Hech biri { qaytmaydi bu
}
getOrElse < U > ( qiymati : U ) : U {
qaytish qiymat
}
}
Biz deyarli tugatdik. Faqat Option funksiyasini amalga oshirish qoladi , biz undan yangi Option s ni yaratish uchun foydalanamiz . Biz allaqachon Variantni amalga oshirdik interfeys sifatida yozing ; Endi biz 140- betdagi “Hamkor ob’yekt namunasi” da qilganimizga o‘xshash yangi Variant yaratish usuli sifatida bir xil nomdagi funktsiyani (TypeScript-da turlar va qiymatlar uchun ikkita alohida nom maydoni borligini unutmang) amalga oshirmoqchimiz. . Agar foydalanuvchi null yoki undefined ga o'tsa, biz ularga Yo'q ni qaytaramiz ; aks holda, biz Some ni qaytaramiz . Yana bir bor buni amalga oshirish uchun imzoni ortiqcha yuklaymiz:
Do'stlaringiz bilan baham: |