Я написал небольшую библиотеку для единиц измерения (да, я мог бы использовать скребки для этого, но мне нужны некоторые черты, которые не дают). Мой класс устройства - UnitOfMeasure
, а количество, то есть число и единица измерения, равно Quantity
.Scala DSL: Как опустить круглые скобки из приложения?
Пусть я определил m
как UnitOfMeasure
, я хочу, чтобы написать что-то вроде:
val q = 3.0 m
Я создал класс QuantityWrapper
в объекте пакета так:
implicit class QuantityWrapper[T](value: T)(implicit num: Numeric[T]) {
def apply(unit: UnitOfMeasure[T]): Quantity[T] =
Quantity(value, unit)
}
Так что теперь я могу сделать :
val q = 3.0(m)
поскольку 3,0 является имплицитом tly преобразован в QuantityWrapper[Double]
, а m
уже определен как UnitOfMeasure[Double]
.
Но я хочу, чтобы можно было опустить круглые скобки. Возможно ли это без определения методов в QuantityWrapper
для каждого устройства, которое у меня есть?
ОК, тогда я определяю наиболее распространенные единицы как методы и перехожу к версии в скобках для других. – rabejens