Sobes.tech
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 մեթոդի առկայության մասին։