mplain
05/31/2020, 12:01 PMmplain
05/31/2020, 12:02 PMfun String.toMeasure(): Measure<*> = Length.values().find { it.includes(this) }
?: Weight.values().find { it.includes(this) }
?: Temperature.values().find { it.includes(this) }
?: Unknown
inline fun <reified T> Measure<T>.maybeConvert(n: Double, target: Measure<*>): Double =
if (target is T) this.convert(n, target)
else cannotConvertTo(target)
mplain
05/31/2020, 12:03 PMmplain
05/31/2020, 12:03 PMmplain
05/31/2020, 12:03 PMmplain
05/31/2020, 12:03 PMval source = input[3].toMeasure()
val target = input[7].toMeasure()
val m = source.maybeConvert(n, target)
mplain
05/31/2020, 12:04 PMCannot use "CapturedType(*) as reified type parameter
mplain
05/31/2020, 12:05 PMmplain
05/31/2020, 12:05 PMKroppeb
05/31/2020, 3:43 PM