София обнови решението на 15.10.2016 01:51 (преди около 8 години)
+def convert_between_temperature_units(original_degrees, original_unit, new_unit)
+ units = {
+ 'F' => original_degrees - original_degrees * 9.0 / 5.0,
Пренаписах го по-разбираемо, но лош стил ли щеше да е ако го бях оставила така?
Йохо, вие в четвърти ранг не можете ли просто да принесете в жертва една червена панда и кода да се оправи сам? :)
Не виждам голяма разлика между двете версии.
Помисли как да го разцепиш този метод на две. Така ще си решиш проблемите. :) В тези два метода може да имаш по един if или case.
+ 'C' => 32.0,
+ 'K' => -459.67
+ }
+
+ return original_degrees if original_unit == new_unit
+ temperature_in_fahrenheit = original_degrees * 9.0 / 5.0 + units[original_unit]
+ return temperature_in_fahrenheit if new_unit == 'F'
+
+ (temperature_in_fahrenheit - units[new_unit]) * 5.0 / 9.0
+end
+
+def melting_point_of_substance(substance, unit)
+ melting_points_in_celsius = {
+ 'water' => 0.0,
+ 'ethanol' => -114.0,
+ 'gold' => 1064.0,
+ 'silver' => 961.8,
+ 'copper' => 1085
+ }
+
+ convert_between_temperature_units(melting_points_in_celsius[substance], 'C', unit)
+end
+
+def boiling_point_of_substance(substance, unit)
+ boiling_points_in_celsius = {
+ 'water' => 100.0,
+ 'ethanol' => 78.37,
+ 'gold' => 2700.0,
+ 'silver' => 2162.0,
+ 'copper' => 2567
+ }
+
+ convert_between_temperature_units(boiling_points_in_celsius[substance], 'C', unit)
+end
Като разделиш метода няма да имаш нужда от тези проверки :)
тогава ще трябва да добавя нови, защото долният ред гърми ако се изпълни за това условие и заради това return-вам