تنويع البط


تنويع البط (بالإنجليزية: Duck typing)‏ في برمجة الحاسوب هي تطبيق لاختبار البط — «إذا كانت تمشي مثل البطة وتبطبط مثل البطة، فيجب أن تكون بطة» — لتحديد إمكانية استخدام كائن لغرض معين. بالتنويع العادي، يتم تحديد الملاءمة حسب نوع الكائن. في تنويع البط، يتم تحديد ملاءمة الكائن من خلال وجود طرق وخصائص معينة، بدلاً من نوع الكائن نفسه.[1]

مثال

هذا مثال بسيط في بايثون 3 يوضح كيف يمكن استخدام أي كائن في أي سياق، حتى يتم استخدامه بطريقة لا يدعمها.

class Duck:
  def fly(self):
    print("Duck flying")
 
class Sparrow:
  def fly(self):
    print("Sparrow flying")

class Whale:
  def swim(self):
    print("Whale swimming")

for animal in Duck(), Sparrow(), Whale():
  animal.fly()

Output:

Duck flying
Sparrow flying
AttributeError: 'Whale' object has no attribute 'fly'

في اللغات المكتوبة بشكل ثابت

تحتوي بعض اللغات ذات التنويع الثابت في الغالب مثل سي شارب و بوو على ميزات[2][3] ترشد المجمّع لترتيب التحقق من نوع الأصناف في وقت التشغيل بدلاً من وقت التجميع، وتضمين كود التحقق من النوع في وقت التشغيل وذلك في الناتج المجمّع. يمكننا أيضًا تنفيذ تويع البط في جافا باستخدام أدوات معالجة الطرق البرمجية MethodHandle API.[4]

مقارنة مع أنظمة الأنواع الأخرى

أنظمة النوع الهيكلي

تنويع البط يشبه التنويع الهيكلي، لكنه متميز عنه. التنويع الهيكلي هي نظام التنويع الثابت يحدد توافق النوع ومعادلته من خلال بنية النوع، في حين أن تنويع البط ديناميكي ويحدد توافق النوع من خلال جزء هيكل النوع ذلك فقط؛ والذي يتم الوصول إليه أثناء وقت التشغيل.

تدعم لغات تايب سكريب[5] و لغة كامل الكائنية و سكالا و غو و Elm[6] و Gosu و PureScript التنويع الهيكلي بدرجات متفاوتة.

البروتوكولات والواجهات

قد توفر البروتوكولات والواجهات بعض مزايا تنويع البط، ولكن تنويع البط متميز في عدم وجود واجهة صريحة محددة. على سبيل المثال، إذا نفذت مكتبة جهة خارجية صنف لا يمكن تعديله، فلا يمكن للعميل استخدام مثيل من ذاك الصنف مع واجهة غير معروفة لتلك المكتبة حتى إذا كان الصنف، في الواقع، يفي بمتطلبات الواجهة. (الحل الشائع لهذه المشكلة هو نمط المحول) في المقابل سيسمح تنويع البط بذلك. مرة أخرى، يجب أن تكون كل الواجهة محققة للتوافق.

قوالب أو أنواع عامة

دوال أو طرق القالب، أو الدوال والطرق العامة تُطبق اختبار البط في تنويع ثابت السياق؛ هذا يجلب بشكل عام كل مزايا وعيوب التحقق من النوع الثابت مقابل الديناميكي. يمكن أن يكون تنويع البط أكثر مرونة أيضًا من حيث أنه يجب فقط تنفيذ الطرق البرمجية التي تم استدعاؤها بالفعل في وقت التشغيل، بينما تتطلب القوالب تنفيذ جميع الطرق التي لا يمكن إثبات أنه لا يمكن الوصول إليها في وقت التجميع.

لغات مثل بايثون و جافا و سي-الكائنية هي أمثلة على تنويع البط لأنه من الممكن فيها إنشاء أنواع جديدة في وقت التشغيل عن طريق الانعكاس وفحص هذه الكائنات فيما إذا كانت تطبق طرقًا معينة. على العكس من ذلك، تقف اللغات التي تعتمد على تقنيات البرمجة وقت التجميع (مثل سي ++ ونظام القالب الخاص بها) وبالتالي لا تتناسب مع صنف ذي تنويع البط؛ بدلاً من ذلك، في مرحلة ما في خط أنابيب التجميع، يتم استبدال جميع أنواع حوامل المكان ببعض الأنواع المحددة؛ المعينة في مثيل على سبيل التعيين. على الرغم من إمكانية مسح نوع معين فيها، فإن فحص وقت التشغيل محدود.

المراجع

  1. ^ "Glossary — Python 3.7.1 documentation". docs.python.org. مؤرشف من الأصل في 2020-06-25. اطلع عليه بتاريخ 2018-11-08.
  2. ^ Boo: Duck Typingنسخة محفوظة October 6, 2008, على موقع واي باك مشين.
  3. ^ "Anders Hejlsberg Introduces C# 4.0 at PDC 2008". مؤرشف من الأصل في 2009-12-16. اطلع عليه بتاريخ 2017-01-30.
  4. ^ "StackOverflow: Implement duck typing using java MethodHandles". مؤرشف من الأصل في 2020-07-01. اطلع عليه بتاريخ 2020-06-13.
  5. ^ "SE Radio Episode 384: Boris Cherny on TypeScript". se-radio.net. مؤرشف من الأصل في 2019-10-26. اطلع عليه بتاريخ 2019-10-25.
  6. ^ Czaplicki، Evan. "Core Language · An Introduction to Elm". مؤرشف من الأصل في 2020-04-27. اطلع عليه بتاريخ 2017-01-30.

Read other articles:

Дройссіг Droyßig —  громада  — Вид Дройссіг Герб Координати: 51°02′59″ пн. ш. 12°01′59″ сх. д. / 51.04972° пн. ш. 12.03306° сх. д. / 51.04972; 12.03306 Країна  Німеччина Земля Саксонія-Ангальт Район Бургенланд Об'єднання громад Дройсігер-Цайтцер-Фор

 

County in North Dakota, United States County in North DakotaBenson CountyCountyBenson County CourthouseLocation within the U.S. state of North DakotaNorth Dakota's location within the U.S.Coordinates: 48°04′N 99°22′W / 48.07°N 99.36°W / 48.07; -99.36Country United StatesState North DakotaFoundedMarch 9, 1883 (created)June 4, 1884 (organized)Named forBertil W. BensonSeatMinnewaukanLargest communityFort TottenArea • Total1,439 sq m...

 

This list is incomplete; you can help by adding missing items. (January 2022) The statue of Winston Churchill on Woodford Green (David McFall, 1959) Map all coordinates using: OpenStreetMap Download coordinates as: KML GPX (all coordinates) GPX (primary coordinates) GPX (secondary coordinates) This is a list of public art in the London Borough of Redbridge. Aldborough Main article: Aldborough Hatch Image Title / subject Location andcoordinates Date Artist / designer Type Designation...

Cet article est une ébauche concernant le sport automobile et l’automobile. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. Pour les articles homonymes, voir Neyret. Robert NeyretBob Neyret au départ du Rallye Monte-Carlo historique 2010BiographieNaissance 28 février 1934 (89 ans)GrenobleNationalité françaiseActivités Pilote de rallye, chirurgien-dentisteEnfant Pascale NeyretAutres informationsSport ...

 

Mahlon HamiltonHamilton, s. 1910Lahir(1880-06-15)15 Juni 1880Baltimore, Maryland, Amerika SerikatMeninggal20 Juni 1960(1960-06-20) (umur 80)Woodland Hills, Los Angeles, California, Amerika SerikatPekerjaanPemeranTahun aktif1908–1950Suami/istriAleta Farnum (1918–1925) Mahlon Preston Hamilton, Jr. (15 Juni 1880 – 20 Juni 1960), adalah seorang pemeran panggung dan layar lebar Amerika Serikat. Ia memulai karir filmnya pada era film bisu, tampil dalam lebih dari 90 fi...

 

МельвільMelleville   Країна  Франція Регіон Нормандія  Департамент Приморська Сена  Округ Дьєпп Код INSEE 76422 Поштові індекси 76260 Координати 49°57′31″ пн. ш. 1°28′23″ сх. д.H G O Висота 83 - 189 м.н.р.м. Площа 9,09 км² Населення 264 (01-2020[1]) Густота 29,37 ос./км² Розміщення В...

Artikel ini perlu diwikifikasi agar memenuhi standar kualitas Wikipedia. Anda dapat memberikan bantuan berupa penambahan pranala dalam, atau dengan merapikan tata letak dari artikel ini. Untuk keterangan lebih lanjut, klik [tampil] di bagian kanan. Mengganti markah HTML dengan markah wiki bila dimungkinkan. Tambahkan pranala wiki. Bila dirasa perlu, buatlah pautan ke artikel wiki lainnya dengan cara menambahkan [[ dan ]] pada kata yang bersangkutan (lihat WP:LINK untuk keterangan lebih lanjut...

 

Bundle of skeletal muscle fibers Muscle fascicleStructure of a skeletal muscle. (Fascicle labeled at bottom right.)DetailsPart ofSkeletal muscleIdentifiersLatinfasiculus muscularisTA22006THH3.03.00.0.00003 Anatomical terminology[edit on Wikidata]Not to be confused with Nerve fascicle. A muscle fascicle is a bundle of skeletal muscle fibers surrounded by perimysium, a type of connective tissue.[1] Structure Muscle cells are grouped into muscle fascicles by enveloping perimysium con...

 

Massively multiplayer online role-playing game This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Star Trek Online – news · newspapers · books · scholar · JSTOR (December 2021) (Learn how and when to remove this template message) 2010 video gameStar Trek OnlineCover art for Star Trek OnlineDeveloper(s)Cryptic S...

Season of television series MTV RoadiesSeason 7Presented byRannvijay SinghBani JJudgesNikhil ChinappaCyrus SahukarNo. of contestants15WinnerAnwar SyedRunner-upZaid Bin Nazir Country of originIndiaNo. of episodes22ReleaseOriginal networkMTV IndiaOriginal release8 November 2009 (2009-11-08) –25 June 2010 (2010-06-25)Season chronology← PreviousSeason 6Next →Season 8 MTV Roadies 7 (advertised as ROADIES) is the seventh season of MTV Roadies, a popular weekly reality...

 

SeloKecamatanPeta lokasi Kecamatan SeloNegara IndonesiaProvinsiJawa TengahKabupatenBoyolaliPemerintahan • CamatWurlaksana, S.Sos.Populasi • Total- jiwaKode Kemendagri33.09.01 Kode BPS3309010 Luas- km²Desa/kelurahan10 Jalan menuju Selo pada tahun 1910 Selo adalah sebuah kecamatan di Kabupaten Boyolali, Jawa Tengah, Indonesia. Selo terletak di kaki Gunung Merapi sebelah utara. Para pendaki gunung memulai pendakian dari kecamatan ini. Kecamatan ini rentan terhadap b...

 

For works with similar titles, see It's a Man's World (disambiguation). 1974 studio album by Renée GeyerIt's a Man's Man's WorldStudio album by Renée GeyerReleasedAugust 1974StudioBill Armstrong Studios, Melbourne, AustraliaGenre Funk R&B soul Length47:29LabelRCAProducerTweed HarrisRenée Geyer chronology Renée Geyer(1973) It's a Man's Man's World(1974) Ready to Deal(1975) Singles from It's a Man's Man's World What Do I Do On Sunday Morning?Released: August 1974 It's a Man's Ma...

Public park in Tuen Mun, Hong Kong Tuen Mun Park屯門公園Entrance pavilionLocation within Hong KongTypePublic parkLocationTuen Mun New TownArea12.5 hectaresOpened29 August 1985; 38 years ago (1985-08-29) (Phase I)August 1988; 35 years ago (1988-08) (Phase II)2 January 1991; 32 years ago (1991-01-02) (Phase III)Operated byLeisure and Cultural Services DepartmentPublic transit accessTown Centre stop (Light Rail)Tuen Mun station ...

 

Football clubSporting MahonésFull nameClub de Fútbol Sporting MahonésFounded1974Dissolved2012GroundBintaufa, Mahón, Balearic Islands, SpainCapacity3,0002011–122ªB – Group 3, W Home colours Away colours Current season Club de Fútbol Sporting Mahonés was a Spanish football team based in Mahón, Menorca, in the autonomous community of Balearic Islands prior to its 2012 dissolution. The club has a successor called Sporting Mahón in the local Menorcan league.[1] C.F. Sporting M...

 

Anisa BaharLahirAni SetiawatiNama lainAnisa BaharPartai politik  NasDem (2023–sekarang)Suami/istriMemo Sanjaya ​ ​(m. 1989; c. 1997)​ Dian Esha Fauzan Prasetya ​ ​(m. 2003)​Anak4, termasuk Jelita Bahar dan Juwita TofhanyKarier musikGenreDangdutTahun aktif1998–sekarang Ani Setiawati, yang dikenal sebagai Anisa Bahar (lahir 25 November 1976) adalah penyanyi Dangdut berkebangsaan Indonesia. Kehi...

Untuk Musisi Suriah, lihat Omar Souleyman. عمر سلیمانOmar SuleimanWakil Presiden MesirMasa jabatan19 Januari 2011 – 11 Februari 2011PendahuluHosni Mubarak*PenggantiLowongDirektur Direktorat Jenderal Intelijen Mesir 15Masa jabatan22 Januari 1993 – 31 Januari 2011PendahuluNour El Dien AfeefyPenggantiMurad Muwafi Informasi pribadiLahir2 Juli 1936 (umur 87)Quena, Kerajaan MesirKebangsaanMesirPartai politikPartai Nasional DemokratAlma materUniversitas Ain Sh...

 

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: WGMY – news · newspapers · books · scholar · JSTOR (February 2017) (Learn how and when to remove this template message) Radio station in Thomasville, GeorgiaWGMYThomasville, GeorgiaBroadcast areaTallahassee, FloridaFrequency107.1 MHz (HD Radio)Branding107.1 Kis...

 

Building located in Ahmedabad, India This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Dada Harir Stepwell – news · newspapers · books · scholar · JSTOR (February 2014) (Learn how and when to remove this template message) Bai Harir StepwellStepwell staircaseGeneral informationTown or cityAhmedabadCountryIndiaC...

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: People's Party Greece – news · newspapers · books · scholar · JSTOR (June 2013) (Learn how and when to remove this template message) Political party in Greece People's Party Λαϊκὸν ΚόμμαFounderDimitrios GounarisFounded1920Dissolved1958Prece...

 

Swiss manufacturer of flavors, fragrances, cosmetic ingredients Givaudan S.A.TypePublic (Société Anonyme)Traded asSIX: GIVNSMI componentISINCH0010645932IndustryFlavours and fragranceFounded1895HeadquartersVernier, canton of Geneva, SwitzerlandNumber of locations166 Locations worldwideKey peopleGilles Andrier, CEO Calvin Grieder, Chairman [1]ProductsTaste & Wellbeing and Fragrance and BeautyRevenueCHF 7.1 billion (2022)[2]Number of employees>16,670 (2022)Websiteww...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!