Даниела обнови решението на 14.10.2016 00:09 (преди около 8 години)
+def convert_between_temperature_units(degrees, current_unit, conversion_unit)
+ if current_unit == 'C' && conversion_unit == 'K'
+ degrees + 273.15
+ elsif current_unit == 'C' && conversion_unit == 'F'
+ degrees * 1.8 + 32
+ elsif current_unit == 'K' && conversion_unit == 'C'
+ degrees - 273.15
+ elsif current_unit == 'K' && conversion_unit == 'F'
+ degrees * 9 / 5 - 459.67
+ elsif current_unit == 'F' && conversion_unit == 'C'
+ (degrees - 32) / 1.8
+ elsif current_unit == 'F' && conversion_unit == 'K'
+ (degrees + 459.67) * 5 / 9
Тук може направо да делиш на 1.8, както по-горе. По-четимо е сякаш. :)
+ end
Какво ще се случи ако се опитаме да конвертираме нещо от Келвин в Келвин, например?
А този дълъг if/elsif/elsif/elsif...
би могъл да се раздели на две ако конвертираш температурата на 2 стъпки (с 2 помощни функции). Така ще ти останат само конверсиите до твоята междинна мерна единица по избор, както и от нея до всички.
+end
+
+def melting_point_of_substance(element, unit)
+ elements = {
Този хеш може да се казва по-описателно, например melting_points
. Така по-надолу в кода ще е по-очевидно какво точно достъпваме ползвайки melting_points[element]
вместо elements[element]
.
+ 'water' => 0, 'ethanol' => -114, 'gold' => 1064,
+ 'silver' => 961.8, 'copper' => 1085
+ }
+ case unit
+ when 'C'
+ elements[element]
+ when 'K'
+ convert_between_temperature_units(elements[element], 'C', 'K')
+ when 'F'
+ convert_between_temperature_units(elements[element], 'C', 'F')
+ end
+end
+
+def boiling_point_of_substance(element, unit)
+ elements = {
+ 'water' => 100, 'ethanol' => 78.37, 'gold' => 2700,
+ 'silver' => 2162, 'copper' => 2567
+ }
+ case unit
+ when 'C'
+ elements[element]
+ when 'K'
+ convert_between_temperature_units(elements[element], 'C', 'K')
+ when 'F'
+ convert_between_temperature_units(elements[element], 'C', 'F')
+ end
+end
Какво ще се случи ако се опитаме да конвертираме нещо от Келвин в Келвин, например?
А този дълъг
if/elsif/elsif/elsif...
би могъл да се раздели на две ако конвертираш температурата на 2 стъпки (с 2 помощни функции). Така ще ти останат само конверсиите до твоята междинна мерна единица по избор, както и от нея до всички.