في الواقع، السبب في عودة “الرقم” كمصفوفة يعود إلى كيفية تعريف الدالة initialize
في الفئة Employee
. عندما تكتب @number = n, @id = i, @phone = ph, @adress = ad
، يتم فهم ذلك بأنك تقوم بتعيين قيمة n
إلى @number
وبالتالي يتم تعيين @number
لتكون مصفوفة تحتوي على n
، وكذلك لباقي المتغيرات.
لحل هذه المشكلة، يمكنك تعديل دالة initialize
لتكون كالتالي:
rubyclass Employee
def initialize(n,i,ph,ad)
@number = n
@id = i
@phone = ph
@adress = ad
end
def getInfo
return @number,@id,@phone,@adress
end
end
بهذا التعديل، يتم تعيين كل قيمة إلى المتغير المناسب بدون تحويلها إلى مصفوفات، وبالتالي ستحصل على الإخراج المتوقع.
المزيد من المعلومات
بالطبع! في Ruby، الوراثة تعتبر وسيلة قوية لإعادة استخدام الشفرة وتنظيم الشفرة. عندما تنشئ فئة جديدة ترث من فئة أخرى، تأخذ الفئة الجديدة جميع المتغيرات العضوية والدوال من الفئة الأساسية.
في مثالك، الفئة Getemploy
تورث من Employee
، وبالتالي ترث جميع المتغيرات @number
و @id
و @phone
و @adress
والدالة getInfo
. ولكن، يجب أن يتم استخدام الدالة initialize
في الفئة الموروثة (Employee
) لتعيين القيم للمتغيرات الداخلية بشكل صحيح.
يُفترض أن تعود الدالة get_data
بقيمة العناصر المخزنة في المتغيرات @number
و @id
و @phone
و @adress
. ولكن بسبب التعديل الخاطئ في الدالة initialize
، كانت القيمة تُعاد كمصفوفة بدلاً من قيم فردية.
بعد التعديل الذي قمت به في دالة initialize
، يجب أن تعمل الشفرة بشكل صحيح الآن، وستعود القيم بشكل صحيح دون تحويلها إلى مصفوفات.