في البداية، يجب أن نلاحظ أن الخطأ الذي تحصل عليه هو undefined method
‘ for nil:NilClass (NoMethodError)، وهذا يعني أن إحدى المتغيرات التي تستخدمها في الضرب (
) تكون قيمتها
nil`، وبالتالي لا يمكن تنفيذ العملية الحسابية.
لحل هذا الخطأ، يجب التأكد من أن قيم المتغيرات hourly_wage
و hours_per_week
في الكلاس HourlyEmployee
قد تم تعيينها بقيم صحيحة وليست nil
. يمكنك التحقق من ذلك عن طريق إضافة بعض الشروط التحقق (validation) في الميثودز hourly_wage=
و hours_per_week=
للتأكد من أن القيم التي تم تعيينها هي قيم صحيحة.
اليك الكود مع إضافة التحقق:
rubyclass HourlyEmployee < Employee
attr_reader :hourly_wage, :hours_per_week
def hourly_wage=(hourly_wage)
if hourly_wage.to_f > 0
@hourly_wage = hourly_wage
else
raise "Hourly wage must be a positive number."
end
end
def hours_per_week=(hours_per_week)
if hours_per_week.to_i > 0
@hours_per_week = hours_per_week
else
raise "Hours per week must be a positive integer."
end
end
def print_pay_stub
print_name
if @hourly_wage && @hours_per_week
pay_for_period = @hourly_wage * @hours_per_week * 2
formatted_pay = format("$%.2f", pay_for_period)
puts "Pay this period: #{formatted_pay}"
else
puts "Hourly wage and hours per week must be set."
end
end
end
أنا أعتقد أن هذا التعديل سيساعد في حل المشكلة التي تواجهها. إذا كان هناك أي استفسار إضافي، فلا تتردد في طرحه.
المزيد من المعلومات
إذا كنت بحاجة إلى أي معلومات إضافية حول تعلم البرمجة بلغة Ruby أو أي شيء آخر، فلا تتردد في طرحها. سأكون هنا لمساعدتك.