Junior — Middle
Ներկայացրեք duck typing կոնցեպցիան և ի՞նչ տարբերություն ունի այն ստատիկ տիպավորման հետ։
sobes.tech AI
Պատասխան AI-ից
Duck typing — բառը ծրագրավորման մեջ, որը նշանակում է, որ օբյեկտի տիպը որոշվում չէ նրա դասով կամ ինտերֆեյսով, այլ որոշ մեթոդների և հատկությունների առկայությամբ։ Եթե օբյեկտը վարվում է ինչպես "պատկառ" (պահում է անհրաժեշտ մեթոդները), այն համարվում է համապատասխան։
Տարբերությունը statական տիպավորման հետ.
- Statական տիպավորման դեպքում, տիպերը ստուգվում են կոմպիլյացիայի ժամանակ, և օբյեկտները պետք է հստակ համապատասխանեն սահմանված տիպերին։
- Duck typing-ում, ստուգումը կատարվում է գործարկման ժամանակ, և կարևոր է միայն ինտերֆեյսի համատեղելիությունը (մեթոդներ/տարրեր), ոչ թե ժառանգականությունը կամ հայտարարած տիպերը։
Python-ում օրինակ (duck typing):
class Duck:
def quack(self):
print("Կռռռ")
class Person:
def quack(self):
print("Ես կարող եմ կռռալ ինչպես պատկառ")
def make_it_quack(thing):
thing.quack()
make_it_quack(Duck()) # Կռռռ
make_it_quack(Person()) # Ես կարող եմ կռռալ ինչպես պատկառ
Այստեղ ֆունկցիան չի անհանգստանում օբյեկտի տիպի մասին, միայն quack մեթոդի առկայության մասին։