Оё имкон дорад, ки ҳамон функсионалиро бо истифода аз синф иҷро кард, чунон ки дар модул?
sobes.tech AI
Ҷавоб аз AI
Дар Ruby, модулҳо (module) ва синфҳо (class) мақсадҳои гуногун доранд, ҳарчанд ҳарду метавонанд усулҳо ва доимиятҳоро дар бар гиранд.
-
Модулҳо барои гурӯҳбандии усулҳо, доимиятҳо ва дигар модулҳо истифода мешаванд, бидуни имконияти эҷоди намунаҳо. Онҳо барои миксинҳо (включ кардани функсионалият дар синфҳо тавассути
includeёextend) маъмуланд. -
Синфҳо имкон медиҳанд, ки объектҳо (намунаҳо) эҷод шаванд, дорои конструкторҳо ҳастанд ва метавонанд мерос гиранд.
Функсионалиятро метавон дар синф иҷро кард, аммо ин маъно дорад, ки барои дастрасӣ ба усулҳо бояд намунаи синф эҷод шавад, ки ҳамеша қулай ё мантиқӣ нест. Модулҳо имкон медиҳанд, ки усулҳоро бевосита ба фазои ном ё синф илова кунед, бе эҷоди объект.
Масалан:
module Greetings
def greet
puts "Hello!"
end
end
class Person
include Greetings
end
Person.new.greet # => Hello!
Агар кӯшиш кунед, модулро бо синф иваз кунед, бояд объект эҷод кунед, то greet-ро даъват кунед:
class Greetings
def greet
puts "Hello!"
end
end
g = Greetings.new
g.greet # => Hello!
Ҳамин тариқ, ҳарчанд техникӣ имконпазир аст, истифодаи модулҳо барои миксинҳо ва гурӯҳбандии усулҳо бештар маъноӣ ва қулай аст.