scala.runtime.RangedProxy
trait RangedProxy [ T ] extends Typed [ T ]
Type Members
abstract type ResultWithoutStep
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 type Any
, x.equals(x)
should
return true
.
It is symmetric: for any instances x
and y
of type Any
, x.equals(y)
should return true
if and only if y.equals(x)
returns true
.
It is transitive: for any instances x
, y
, and z
of type Any
if
x.equals(y)
returns true
and y.equals(z)
returns true
, then
x.equals(z)
should return true
.
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
(defined at scala.Proxy)
Abstract Value Members From scala.runtime.RangedProxy
abstract def to(end: T): ResultWithoutStep
(defined at scala.runtime.RangedProxy)
abstract def to(end: T, step: T): collection.immutable.IndexedSeq[T]
(defined at scala.runtime.RangedProxy)
abstract def until(end: T): ResultWithoutStep
(defined at scala.runtime.RangedProxy)
abstract def until(end: T, step: T): collection.immutable.IndexedSeq[T]
(defined at scala.runtime.RangedProxy)
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 ]
}