Սովորեք ծածկագրել. Ո՞րն է տարբերությունը Ruby- ում ներառման և տարածման միջև:


պատասխանել 1:
Squeaky մոդուլը միանշանակ ճզմում է «eep!»: Վերջ վերջ

«Ներառել» -ը միացնում է մոդուլի օրինակելի մեթոդները ստացող մոդուլի / դասի մեջ:

Հիանալի բան է պարունակում քրքջ վերջ Was.neues.squeak # => "eep!"

«Ընդլայնել» -ը միակցում է մոդուլի օրինակելի մեթոդները ստացող օբյեկտին:

բան = Object.new բան.extend squeaky things.squeak # => "eep!"

Եթե ​​դուք օգտագործում եք «երկարաձգման» մեթոդը դասի համատեքստում, մոդուլի օրինակելի մեթոդները դառնում են «դասի մեթոդներ», քանի որ դրանք խառնվում են դասի և ոչ թե դասի օրինակների մեջ:

Class OtherThing Squeaky ընդլայնված ծայրը OtherThing.squeak # => "eep!" OtherThing.new.squeak # => NoMethodError (չսահմանված մեթոդ `քամիչ)