Packages

• package
Definition Classes
root
• package

The Scala API for Quantities, Units of Measure and Dimensional Analysis

Squants

The Scala API for Quantities, Units of Measure and Dimensional Analysis

Overview

Squants is a framework of data types and a domain specific language (DSL) for representing Quantities, their Units of Measure, and their Dimensional relationships. The API supports typesafe dimensional analysis, improved domain models and more. All types are immutable and thread-safe.

Typedefs and implicits for common usages

Definition Classes
root
Version

0.1

Since

0.1

• package

Definition Classes
squants
Since

0.1

• package

Definition Classes
squants
Since

0.1

• package
Definition Classes
squants
• package

Squants Market API

Squants Market API

Market Types are similar but not quite the same as other quantities in the library.

The primary type, squants.market.Money, is derived from Quantity, and its Units of Measure are Currencies. However, because the conversion multipliers between units can not be predefined, many of the behaviors have been overridden and augmented to realize correct behavior.

squants.market.Prices represent a Ratio between Money and some other Quantity. Prices can be created from ratios of Money and a Quantity

```val money: Money = USD(10)
val length: Length = Meters(1)
val price: Price[Length] = money / length```

Multiplying a Price * Quantity will yield Money amount that represents the cost of the quantity

`val cost: Money = price * Meters(3.8)`

and multiplying Price * Money will yield the corresponding Quantity amount

```val budget: Money = USD(250)
val quote: Length = price * budget```

squants.market.CurrencyExchangeRates represent conversion rates between currencies. Use them to explicitly convert Money values in one currency to values in another.

squants.market.MoneyContext provide the implicit context necessary to perform cross-currency operations on Money values with conversions automatically applied.

Some binary math operations will work on Moneys of like Currency with no MoneyContext in scope. Attempts to perform these operations on Moneys of dissimilar currencies will throw an exception at runtime.

Other operations, including direct conversions to other currencies, require a MoneyContext and will not compile without it. However, there is no compile time check to determine if the correct exchange rates will be available at runtime. Operation requiring conversion without the required rates available will throw a NoSuchExchangeRateException at runtime.

The defaultMoneyContext uses the USD as the default and provides a list of ~20 common currencies, and NO exchange rates. If your application requires something different you should initialize your own implicit MoneyContext

Definition Classes
squants
Since

0.1

• package

Definition Classes
squants
Since

0.1

• package

Definition Classes
squants
Since

0.1

• package

Definition Classes
squants
Since

0.1

• package

Definition Classes
squants
Since

0.1

• package

Definition Classes
squants
Since

0.1

• package

Definition Classes
squants
Since

0.1

• package

Definition Classes
squants
Since

0.1

• AbstractQuantityNumeric
• BaseDimension
• BinarySystem
• Dimension
• Dimensionless
• DimensionlessConversions
• DimensionlessUnit
• DoubleVector
• Dozen
• Each
• Gross
• LikeRatio
• MetricSystem
• Percent
• PrimaryUnit
• Quantity
• QuantityParseException
• QuantityRange
• QuantityVector
• Ratio
• SVector
• Score
• SiBaseUnit
• SiUnit
• SquantifiedBigDecimal
• SquantifiedDouble
• SquantifiedLong
• UnitConverter
• UnitOfMeasure
o

squants

MetricSystem 

object MetricSystem

Singleton defining Metric System multipliers

Source
MetricSystem.scala
Since

0.1

Linear Supertypes
Ordering
1. Alphabetic
2. By Inheritance
Inherited
1. MetricSystem
2. AnyRef
3. Any
1. Hide All
2. Show All
Visibility
1. Public
2. All

Value Members

1. final def !=(arg0: Any)
Definition Classes
AnyRef → Any
2. final def ##(): Int
Definition Classes
AnyRef → Any
3. final def ==(arg0: Any)
Definition Classes
AnyRef → Any
4. lazy val Atto
5. lazy val Centi
6. lazy val Deca
7. lazy val Deci
8. lazy val Exa
9. lazy val Femto
10. lazy val Giga
11. lazy val Hecto
12. lazy val Kilo
13. lazy val Mega
14. lazy val Micro
15. lazy val Milli
16. lazy val Nano
17. lazy val Peta
18. lazy val Pico
19. lazy val Tera
20. lazy val Yocto
21. lazy val Yotta
22. lazy val Zepto
23. lazy val Zetta
24. final def asInstanceOf[T0]: T0
Definition Classes
Any
25. def clone()
Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws( ... )
26. final def eq(arg0: AnyRef)
Definition Classes
AnyRef
27. def equals(arg0: Any)
Definition Classes
AnyRef → Any
28. def finalize(): Unit
Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws( classOf[java.lang.Throwable] )
29. final def getClass(): Class[_]
Definition Classes
AnyRef → Any
30. def hashCode(): Int
Definition Classes
AnyRef → Any
31. final def isInstanceOf[T0]
Definition Classes
Any
32. final def ne(arg0: AnyRef)
Definition Classes
AnyRef
33. final def notify(): Unit
Definition Classes
AnyRef
34. final def notifyAll(): Unit
Definition Classes
AnyRef
35. final def synchronized[T0](arg0: ⇒ T0): T0
Definition Classes
AnyRef
36. def toString(): String
Definition Classes
AnyRef → Any
37. final def wait(): Unit
Definition Classes
AnyRef
Annotations
@throws( ... )
38. final def wait(arg0: Long, arg1: Int): Unit
Definition Classes
AnyRef
Annotations
@throws( ... )
39. final def wait(arg0: Long): Unit
Definition Classes
AnyRef
Annotations
@throws( ... )