From 43e0694d9dee08867eef06d9a9de28e7b7fb4458 Mon Sep 17 00:00:00 2001 From: LordBaryhobal Date: Tue, 6 May 2025 14:32:03 +0200 Subject: [PATCH] added assignment 9 ex 1 --- src/Assignment9/Assignment9.scala | 29 +++++++++++++++++++++++++++++ src/Assignment9/Ex1.scala | 16 ++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 src/Assignment9/Assignment9.scala create mode 100644 src/Assignment9/Ex1.scala diff --git a/src/Assignment9/Assignment9.scala b/src/Assignment9/Assignment9.scala new file mode 100644 index 0000000..46c849e --- /dev/null +++ b/src/Assignment9/Assignment9.scala @@ -0,0 +1,29 @@ +import Assignment9.Kelvin.kel2cel + +import scala.language.implicitConversions + + +package object Assignment9 { + sealed trait Temperature { + } + + object Temperature { + implicit def cel2kel(celsius: Celsius): Kelvin = new Kelvin(celsius.value + 273.15) + implicit def kel2cel(kelvin: Kelvin): Celsius = new Celsius(kelvin.value - 273.15) + } + + case class Celsius(value: Double) extends Temperature { + override def toString: String = s"$value°C" + } + object Celsius { + implicit def val2cel(value: Double): Celsius = new Celsius(value) + } + + case class Kelvin(value: Double) extends Temperature { + override def toString: String = s"$value K" + } + object Kelvin { + implicit def kel2cel(value: Double): Kelvin = new Kelvin(value) + + } +} diff --git a/src/Assignment9/Ex1.scala b/src/Assignment9/Ex1.scala new file mode 100644 index 0000000..1acd486 --- /dev/null +++ b/src/Assignment9/Ex1.scala @@ -0,0 +1,16 @@ +package Assignment9 + +import scala.language.implicitConversions + +object Ex1 extends App { + val a: Celsius = 30 + val b: Kelvin = 30 + val c: Kelvin = Celsius(10) + val d: Celsius = c + val e: Temperature = d + + println(a) // Should print "30°C" + println(b) // Should print "30 K" + + println() +}