Scala Library: scala.runtime.ScalaNumberProxy
scala.runtime.ScalaNumberProxy
trait ScalaNumberProxy[T] extends ScalaNumericAnyConversions with Typed[T] with OrderedProxy[T]
Base classes for the Rich* wrappers of the primitive types. As with all classes in scala.runtime.*, this is not a supported API.
- Source
- Version
- 2.9
- Since
- 2.9
Concrete Value Members From scala.Proxy
def equals(that: Any): Boolean
Compares the receiver object ( this
) with the argument object ( that
) for
equivalence.
Any implementation of this method should be an equivalence relation :
- It is reflexive: for any instance
x
of typeAny
,x.equals(x)
should returntrue
. - It is symmetric: for any instances
x
andy
of typeAny
,x.equals(y)
should returntrue
if and only ify.equals(x)
returnstrue
. - It is transitive: for any instances
x
,y
, andz
of typeAny
ifx.equals(y)
returnstrue
andy.equals(z)
returnstrue
, thenx.equals(z)
should returntrue
.
If you override this method, you should verify that your implementation remains
an equivalence relation. Additionally, when overriding this method it is usually
necessary to override hashCode
to ensure that objects which are “equal” (
o1.equals(o2)
returns true
) hash to the same scala.Int. (
o1.hashCode.equals(o2.hashCode)
).
- that
- the object to compare against this object for equality.
- returns
true
if the receiver object is equivalent to the argument;false
otherwise.
- Definition Classes
- Proxy → Any
(defined at scala.Proxy)
Concrete Value Members From scala.math.Ordered
def <(that: T): Boolean
Returns true if this
is less than that
- Definition Classes
- Ordered
(defined at scala.math.Ordered)
def <=(that: T): Boolean
Returns true if this
is less than or equal to that
.
- Definition Classes
- Ordered
(defined at scala.math.Ordered)
def >(that: T): Boolean
Returns true if this
is greater than that
.
- Definition Classes
- Ordered
(defined at scala.math.Ordered)
def >=(that: T): Boolean
Returns true if this
is greater than or equal to that
.
- Definition Classes
- Ordered
(defined at scala.math.Ordered)
def compareTo(that: T): Int
Result of comparing this
with operand that
.
- Definition Classes
- Ordered → Comparable
(defined at scala.math.Ordered)
Concrete Value Members From scala.math.ScalaNumericAnyConversions
def unifiedPrimitiveEquals(x: Any): Boolean
Should only be called after all known non-primitive types have been excluded. This method won’t dispatch anywhere else after checking against the primitives to avoid infinite recursion between equals and this on unknown “Number” variants.
Additionally, this should only be called if the numeric type is happy to be converted to Long, Float, and Double. If for instance a BigInt much larger than the Long range is sent here, it will claim equality with whatever Long is left in its lower 64 bits. Or a BigDecimal with more precision than Double can hold: same thing. There’s no way given the interface available here to prevent this error.
- Attributes
- protected
- Definition Classes
- ScalaNumericAnyConversions
(defined at scala.math.ScalaNumericAnyConversions)
Concrete Value Members From scala.runtime.OrderedProxy
def compare(y: T): Int
Result of comparing this
with operand that
.
Implement this method to determine how instances of A will be sorted.
Returns x
where:
x < 0
whenthis < that
x == 0
whenthis == that
-
x > 0
whenthis > that
- Definition Classes
- OrderedProxy → Ordered
(defined at scala.runtime.OrderedProxy)
Concrete Value Members From scala.runtime.ScalaNumberProxy
def max(that: T): T
Returns this
if this > that
or that
otherwise.
(defined at scala.runtime.ScalaNumberProxy)
def min(that: T): T
Returns this
if this < that
or that
otherwise.
(defined at scala.runtime.ScalaNumberProxy)
Full Source:
/* __ *\
** ________ ___ / / ___ Scala API **
** / __/ __// _ | / / / _ | (c) 2002-2013, LAMP/EPFL **
** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
** /____/\___/_/ |_/____/_/ | | **
** |/ **
\* */
package scala
package runtime
import scala.collection.immutable
import scala.math.ScalaNumericAnyConversions
import immutable.NumericRange
import Proxy.Typed
/** Base classes for the Rich* wrappers of the primitive types.
* As with all classes in scala.runtime.*, this is not a supported API.
*
* @author Paul Phillips
* @version 2.9
* @since 2.9
*/
trait ScalaNumberProxy[T] extends Any with ScalaNumericAnyConversions with Typed[T] with OrderedProxy[T] {
protected implicit def num: Numeric[T]
def underlying() = self.asInstanceOf[AnyRef]
def doubleValue() = num.toDouble(self)
def floatValue() = num.toFloat(self)
def longValue() = num.toLong(self)
def intValue() = num.toInt(self)
def byteValue() = intValue().toByte
def shortValue() = intValue().toShort
/** Returns `'''this'''` if `'''this''' < that` or `that` otherwise. */
def min(that: T): T = num.min(self, that)
/** Returns `'''this'''` if `'''this''' > that` or `that` otherwise. */
def max(that: T): T = num.max(self, that)
/** Returns the absolute value of `'''this'''`. */
def abs = num.abs(self)
/** Returns the signum of `'''this'''`. */
def signum = num.signum(self)
}
trait ScalaWholeNumberProxy[T] extends Any with ScalaNumberProxy[T] {
def isWhole() = true
}
trait IntegralProxy[T] extends Any with ScalaWholeNumberProxy[T] with RangedProxy[T] {
protected implicit def num: Integral[T]
type ResultWithoutStep = NumericRange[T]
def until(end: T): NumericRange.Exclusive[T] = NumericRange(self, end, num.one)
def until(end: T, step: T): NumericRange.Exclusive[T] = NumericRange(self, end, step)
def to(end: T): NumericRange.Inclusive[T] = NumericRange.inclusive(self, end, num.one)
def to(end: T, step: T): NumericRange.Inclusive[T] = NumericRange.inclusive(self, end, step)
}
trait FractionalProxy[T] extends Any with ScalaNumberProxy[T] with RangedProxy[T] {
protected implicit def num: Fractional[T]
protected implicit def integralNum: Integral[T]
/** In order to supply predictable ranges, we require an Integral[T] which provides
* us with discrete operations on the (otherwise fractional) T. See Numeric.DoubleAsIfIntegral
* for an example.
*/
type ResultWithoutStep = Range.Partial[T, NumericRange[T]]
def isWhole() = false
def until(end: T): ResultWithoutStep = new Range.Partial(NumericRange(self, end, _))
def until(end: T, step: T): NumericRange.Exclusive[T] = NumericRange(self, end, step)
def to(end: T): ResultWithoutStep = new Range.Partial(NumericRange.inclusive(self, end, _))
def to(end: T, step: T): NumericRange.Inclusive[T] = NumericRange.inclusive(self, end, step)
}
trait OrderedProxy[T] extends Any with Ordered[T] with Typed[T] {
protected def ord: Ordering[T]
def compare(y: T) = ord.compare(self, y)
}
trait RangedProxy[T] extends Any with Typed[T] {
type ResultWithoutStep
def until(end: T): ResultWithoutStep
def until(end: T, step: T): immutable.IndexedSeq[T]
def to(end: T): ResultWithoutStep
def to(end: T, step: T): immutable.IndexedSeq[T]
}
Interested in Scala?
I send out weekly, personalized emails with articles and conference talks.
Subscribe now.