paint-brush
Mutauro Wako Wekutanga Wekuronga Unonyanya Kupesvedzera Mafungiro Aunoita NezveCodeby@nfrankel
308 kuverenga
308 kuverenga

Mutauro Wako Wekutanga Wekuronga Unonyanya Kupesvedzera Mafungiro Aunoita NezveCode

by Nicolas Fränkel6m2025/02/02
Read on Terminal Reader

Kurebesa; Kuverenga

Zvirongwa zvinonangana nechinhu, nhaka, uye kunyora zvishoma zvinogona kunge zvine zvazvinoreva zvisingaturikire mune mimwe mitauro, zvichienderana nemutauro wekutanga waunodzidza.
featured image - Mutauro Wako Wekutanga Wekuronga Unonyanya Kupesvedzera Mafungiro Aunoita NezveCode
Nicolas Fränkel HackerNoon profile picture


Java ndiwo mutauro wekutanga wandakadzidza mubasa rangu. Chimiro chayo chine hwaro mumakore angu ekutanga ekunzwisisa mazano ehurongwa. Mushure mokupfuura nemimwe mitauro yakati wandei ine nzira dzakasiyana kwazvo, ndawedzera maonero angu. Nhasi ndoda kumbozeya nyaya yenhaka .

Nhaka muJava

MuJava, iyo pfungwa yenhaka yakanyatsobatanidzwa nepfungwa ye subtyping . Subtyping ndiko kuita kwehukama hweIS A. Semuenzaniso, kirasi Rabbit imhando yemhando Mammal . Kubva zvino, muenzaniso Rabbit une maitiro ese Mammal : inogara nhaka maitiro.


Nekuda kweizvi, unogona kupfuudza muenzaniso Rabbit apo nzira inodaidzira Mammal parameter kana kudzosa muenzaniso Rabbit kana nzira yekudzoka iri Mammal . Kana iwe wakadzidza Java, .Net, kana chimwe chinhu chiri kure chakafanana, ndiwo maonero aunoona nhaka, uye inova itsva yemazuva ose.


Inhaka yakajeka .


 class Animal { void feed(); } class Rabbit extends Animal { //1 }
  1. Nekuti Rabbit IS A Animal inogona feed()

Nhaka muGo

Pandakatanga kutarisa Go, ndakashamisika kuti haina subtyping ichiri kupa nhaka. Go inoshandisa dhadha kutaipa:


Kana ichiita sedhadha, inotuhwina sedhadha, uye quacks sedhadha, zvino pamwe ndizvo.


Kana Go struct ichishandisa mabasa akafanana senge interface, inoisa zvachose iyo interface.


 type Animal interface { feed() //1 } type Rabbit struct { } func (rabbit Rabbit) feed() { //2 // feeds }
  1. Animal inogona kudya
  2. Nekuti feed() basa riripo rinotora Rabbit separameter, Rabbit inoshandisa Animal


Ini handifarire Enda nekuda kwekukanganisa-kubata maitiro, asi ini ndaive nepfungwa mbiri pamusoro pekuita zvizere. Kune rumwe rutivi, ndakanzwisisa kuti yakanga iri pfungwa itsva, uye ndakaedza kuramba ndakazaruka mundangariro; nerumwe rutivi, ndinofunga kuti zvinhu zvinogara zviri nani pachena pane kujeka, kungave mukuvandudza software kana hupenyu chaihwo.

Nhaka muPython

Python ndiwo mutauro unonakidza wandinoziva maererano nenhaka.


Subtyping uye mhando-yakavakirwa nhaka yave iripo muPython kubva payakavambwa.


 class Animal: def feed(self): #1 pass #2 class Rabbit(Animal): #3 pass
  1. Animal inogona kudya
  2. Iko hakuna makirasi abstract kana interfaces muPython, makirasi chete
  3. Nekuti Rabbit IS A Animal inogona feed()


Panyaya iyi, Python inoshanda zvakafanana neJava maererano nenhaka. Python inopawo duck typing, iyo yandakatsanangura semashiripiti nzira . Semuyenzaniso, kuita chimwe chinhu chinogoneka , semuenzaniso , chinogona kudzosa iterator , unongoda kuita __iter__() uye __next__() :


 class SingleValueIterable(): done = False def __init__(self, value): self.value = value def __iter__(self): #1 return self def __next__(self): #1 if self.done: raise StopIteration else: self.done = True return self.value svi = SingleValueIterable(5) sviter = iter(svi) #2 for x in sviter: print(x) #3
  1. Dhadha kutaipa nzira
  2. Gadzira Iterator - Pythons inoziva sei kubva patakaita nzira dziri pamusoro
  3. 5


Dambudziko neiyi dhadha yekunyora nzira nderekuti inoshanda chete kune yePython yakafanotsanangurwa yemashiripiti nzira. Zvakadini kana iwe uchida kupa kirasi iyo yechitatu bato inogona kutora kubva mairi zvisina?


 class Animal: def feed(): pass class Rabbit: def feed(): pass


Muchidimbu chiri pamusoro apa, Rabbit haisi Animal , zvinotirwadza. Pinda PEP 544 , yakanzi Protocols: Structural subtyping (static duck typing). Iyo PEP inogadzirisa kusagoneka kwekutsanangura nzira dzemashiripiti kumakirasi edu. Inotsanangura kirasi Protocol yakapfava: kana uchinge wagara nhaka kubva mairi, nzira dzinotsanangurwa mukirasi dzinove dzakakodzera kutaipa dhadha, nokudaro zita - static duck typing.


 from typing import Protocol class Animal(Protocol): #1 def feed(): #2 pass class Rabbit: def feed(): #2 pass class VenusFlytrap: def feed(): #2 pass
  1. Nhaka kubva Protocol
  2. Nekuti Animal Protocol , chero kirasi inotsanangura feed() inova Animal , zvirinani kana kuipa

Mhedziso

Hurongwa hunonangana nechinhu, nhaka, uye kunyora zvishoma zvinogona kunge zvine zvazvinoreva zvisingaturikire mune mimwe mitauro, zvichienderana nemutauro wekutanga waunodzidza. Java inozviita semutauro wakatarisana neChinhu uye inopa iyo yakazara package. Enda hausi mutauro weOO, asi uchiri kupa subtyping kuburikidza nedhadha kutaipa. Python inopa zvese zviri pachena uye zvakadzika nhaka asi pasina mainterface.


Iwe unodzidza mutauro mutsva wechirongwa nekuuenzanisa ne(s) waunotoziva. Kuziva mashandisirwo emutauro ndicho chinhu chakakosha pakunyora kodhi yeidiomatic mumutauro wauri kuda. Zvijairirane nezvinhu zvisipo mumitauro yako inozivikanwa: ivo vanozowedzera kunzwisisa kwako kwehurongwa hwakazara.


Enda kumberi:




Yakabudiswa paA Java Geek muna Ndira 26, 2025