bereits.
class Device
singleton_class.send(:attr_accessor, :cost_per_kwh)
def initialize(name, watts)
@name = name
@watts = watts
end
def daily_cost(hours_per_day)
self.class.cost_per_kwh * kwh_per_day(hours_per_day)
end
def monthly_cost(hours_per_day)
30 * daily_cost(hours_per_day)
end
private
def kwh_per_day(hours_per_day)
hours_per_day * @watts/1000
end
end
singleton_class.send(:attr_accessor, :cost_per_kwh)
schafft eine Setter und Getter für die Klasseninstanzvariable @cost_per_kwh
.
Zuerst erhalten und speichern Sie die Kosten pro kwh, die bei der Berechnung der Kosten für alle Geräte von Interesse verwendet werden.
puts "Please enter the cost per kwh in $"
Device.cost_per_kwh = gets.chomp.to_f
Angenommen
Device.cost_per_kwh = 0.0946
Berechnen Sie die Kosten für jedes Gerät von Interesse.
puts "What is the name of the device?"
name = gets.chomp
puts "How many watts does it draw?"
watts = gets.chomp.to_f
Angenommen
name = "chair"
watts = 20000.0
Wir können nun eine Instanz der Klasse erstellen.
Schließlich, erhalten Stunden pro Tag, die einzige Variable, die sich wahrscheinlich in zukünftigen Berechnungen der Kosten für das gegebene Gerät ändern wird.
puts "How many hours do you use the #{name} daily?"
hours_per_day = gets.chomp.to_f
Schließlich nehme
hours_per_day = 0.018
dann können wir die Kosten berechnen.
puts "Daily cost: $#{ device.daily_cost(hours_per_day)}"
Daily cost: $0.034056€
puts "Monthly_cost (30 days/month): $#{ 30 * device.daily_cost(hours_per_day) }"
Monthly_cost (30 days/month): $1.0216800000000001
Angenommen Umstände ändern 1 und die Verwendung der Vorrichtung zunimmt. Wir müssen nur die Stunden pro Tag aktualisieren. Zum Beispiel
puts "How many hours do you use the #{name} daily?"
hours_per_day = gets.chomp.to_f
Es sei nun angenommen
hours_per_day = 1.5
Dann
puts "Daily cost: $#{ device.daily_cost(hours_per_day)}"
Daily cost: $2.838
puts "Monthly_cost (30 days/month): $#{ 30 * device.daily_cost(hours_per_day) }"
Monthly_cost (30 days/month): $85.14
1 Die Wahl eines neuen Präsidenten, zum Beispiel.
Warum ist '@@ kwh' eine Klassenvariable? –
Ich glaube 'montly_cost' sollte' monty_cost' sein, vorausgesetzt es handelt sich um Monty Pythons Flying Circus. –