final class NegInt extends AnyVal
An AnyVal for negative Ints.
Note: a NegInt may not equal 0. If you want negative number or 0, use NegZInt.
Because NegInt is an AnyVal it will usually be
as efficient as an Int, being boxed only when an Int
would have been boxed.
The NegInt.apply factory method is implemented in terms of a macro that
checks literals for validity at compile time. Calling NegInt.apply with
a literal Int value will either produce a valid NegInt instance
at run time or an error at compile time. Here's an example:
scala> import anyvals._
import anyvals._
scala> NegInt(-42)
res0: org.scalactic.anyvals.NegInt = NegInt(-42)
scala> NegInt(0)
<console>:14: error: NegInt.apply can only be invoked on a negative (i < 0) literal, like NegInt(-42).
              NegInt(0)
                    ^
NegInt.apply cannot be used if the value being passed is a variable (i.e., not a literal), because
the macro cannot determine the validity of variables at compile time (just literals). If you try to pass a variable
to NegInt.apply, you'll get a compiler error that suggests you use a different factor method,
NegInt.from, instead:
scala> val x = 1
x: Int = 1
scala> NegInt(x)
<console>:15: error: NegInt.apply can only be invoked on a negative integer literal, like NegInt(-42). Please use NegInt.from instead.
              NegInt(x)
                    ^
The NegInt.from factory method will inspect the value at runtime and return an Option[NegInt]. If
the value is valid, NegInt.from will return a Some[NegInt], else it will return a None.
Here's an example:
scala> NegInt.from(x) res3: Option[org.scalactic.anyvals.NegInt] = Some(NegInt(1)) scala> val y = 0 y: Int = 0 scala> NegInt.from(y) res4: Option[org.scalactic.anyvals.NegInt] = None
The NegInt.apply factory method is marked implicit, so that you can pass literal Ints
into methods that require NegInt, and get the same compile-time checking you get when calling
NegInt.apply explicitly. Here's an example:
scala> def invert(pos: NegInt): Int = Int.MaxValue - pos
invert: (pos: org.scalactic.anyvals.NegInt)Int
scala> invert(1)
res0: Int = 2147483646
scala> invert(Int.MaxValue)
res1: Int = 0
scala> invert(0)
<console>:15: error: NegInt.apply can only be invoked on a negative (i < 0) integer literal, like NegInt(-42).
              invert(0)
                     ^
scala> invert(-1)
<console>:15: error: NegInt.apply can only be invoked on a negative (i < 0) integer literal, like NegInt(-42).
              invert(-1)
                      ^
This example also demonstrates that the NegInt companion object also defines implicit widening conversions
when either no loss of precision will occur or a similar conversion is provided in Scala. (For example, the implicit
conversion from Int to Float in Scala can lose precision.) This makes it convenient to
use a NegInt where an Int or wider type is needed. An example is the subtraction in the body
of the invert method defined above, Int.MaxValue - pos. Although Int.MaxValue is
an Int, which has no - method that takes a NegInt (the type of pos),
you can still subtract pos, because the NegInt will be implicitly widened to Int.
- Source
- NegInt.scala
- Alphabetic
- By Inheritance
- NegInt
- AnyVal
- Any
- Hide All
- Show All
- Public
- Protected
Value Members
-   final  def !=(arg0: Any): Boolean- Definition Classes
- Any
 
-   final  def ##: Int- Definition Classes
- Any
 
-    def %(x: Double): DoubleReturns the remainder of the division of this value by x.
-    def %(x: Float): FloatReturns the remainder of the division of this value by x.
-    def %(x: Long): LongReturns the remainder of the division of this value by x.
-    def %(x: Int): IntReturns the remainder of the division of this value by x.
-    def %(x: Char): IntReturns the remainder of the division of this value by x.
-    def %(x: Short): IntReturns the remainder of the division of this value by x.
-    def %(x: Byte): IntReturns the remainder of the division of this value by x.
-    def &(x: Long): LongReturns the bitwise AND of this value and x.Returns the bitwise AND of this value and x.- (0xf0 & 0xaa) == 0xa0 // in binary: 11110000 // & 10101010 // -------- // 10100000 
 Example:
-    def &(x: Int): IntReturns the bitwise AND of this value and x.Returns the bitwise AND of this value and x.- (0xf0 & 0xaa) == 0xa0 // in binary: 11110000 // & 10101010 // -------- // 10100000 
 Example:
-    def &(x: Char): IntReturns the bitwise AND of this value and x.Returns the bitwise AND of this value and x.- (0xf0 & 0xaa) == 0xa0 // in binary: 11110000 // & 10101010 // -------- // 10100000 
 Example:
-    def &(x: Short): IntReturns the bitwise AND of this value and x.Returns the bitwise AND of this value and x.- (0xf0 & 0xaa) == 0xa0 // in binary: 11110000 // & 10101010 // -------- // 10100000 
 Example:
-    def &(x: Byte): IntReturns the bitwise AND of this value and x.Returns the bitwise AND of this value and x.- (0xf0 & 0xaa) == 0xa0 // in binary: 11110000 // & 10101010 // -------- // 10100000 
 Example:
-    def *(x: Double): DoubleReturns the product of this value and x.
-    def *(x: Float): FloatReturns the product of this value and x.
-    def *(x: Long): LongReturns the product of this value and x.
-    def *(x: Int): IntReturns the product of this value and x.
-    def *(x: Char): IntReturns the product of this value and x.
-    def *(x: Short): IntReturns the product of this value and x.
-    def *(x: Byte): IntReturns the product of this value and x.
-    def +(x: Double): DoubleReturns the sum of this value and x.
-    def +(x: Float): FloatReturns the sum of this value and x.
-    def +(x: Long): LongReturns the sum of this value and x.
-    def +(x: Int): IntReturns the sum of this value and x.
-    def +(x: Char): IntReturns the sum of this value and x.
-    def +(x: Short): IntReturns the sum of this value and x.
-    def +(x: Byte): IntReturns the sum of this value and x.
-    def +(x: String): StringConverts this NegInt's value to a string then concatenates the given string.
-    def -(x: Double): DoubleReturns the difference of this value and x.
-    def -(x: Float): FloatReturns the difference of this value and x.
-    def -(x: Long): LongReturns the difference of this value and x.
-    def -(x: Int): IntReturns the difference of this value and x.
-    def -(x: Char): IntReturns the difference of this value and x.
-    def -(x: Short): IntReturns the difference of this value and x.
-    def -(x: Byte): IntReturns the difference of this value and x.
-    def /(x: Double): DoubleReturns the quotient of this value and x.
-    def /(x: Float): FloatReturns the quotient of this value and x.
-    def /(x: Long): LongReturns the quotient of this value and x.
-    def /(x: Int): IntReturns the quotient of this value and x.
-    def /(x: Char): IntReturns the quotient of this value and x.
-    def /(x: Short): IntReturns the quotient of this value and x.
-    def /(x: Byte): IntReturns the quotient of this value and x.
-    def <(x: Double): BooleanReturns trueif this value is less than x,falseotherwise.
-    def <(x: Float): BooleanReturns trueif this value is less than x,falseotherwise.
-    def <(x: Long): BooleanReturns trueif this value is less than x,falseotherwise.
-    def <(x: Int): BooleanReturns trueif this value is less than x,falseotherwise.
-    def <(x: Char): BooleanReturns trueif this value is less than x,falseotherwise.
-    def <(x: Short): BooleanReturns trueif this value is less than x,falseotherwise.
-    def <(x: Byte): BooleanReturns trueif this value is less than x,falseotherwise.
-    def <<(x: Long): IntReturns this value bit-shifted left by the specified number of bits, filling in the new right bits with zeroes. Returns this value bit-shifted left by the specified number of bits, filling in the new right bits with zeroes. - 6 << 3 == 48 // in binary: 0110 << 3 == 0110000 
 Example:
-    def <<(x: Int): IntReturns this value bit-shifted left by the specified number of bits, filling in the new right bits with zeroes. Returns this value bit-shifted left by the specified number of bits, filling in the new right bits with zeroes. - 6 << 3 == 48 // in binary: 0110 << 3 == 0110000 
 Example:
-    def <=(x: Double): BooleanReturns trueif this value is less than or equal to x,falseotherwise.
-    def <=(x: Float): BooleanReturns trueif this value is less than or equal to x,falseotherwise.
-    def <=(x: Long): BooleanReturns trueif this value is less than or equal to x,falseotherwise.
-    def <=(x: Int): BooleanReturns trueif this value is less than or equal to x,falseotherwise.
-    def <=(x: Char): BooleanReturns trueif this value is less than or equal to x,falseotherwise.
-    def <=(x: Short): BooleanReturns trueif this value is less than or equal to x,falseotherwise.
-    def <=(x: Byte): BooleanReturns trueif this value is less than or equal to x,falseotherwise.
-   final  def ==(arg0: Any): Boolean- Definition Classes
- Any
 
-    def >(x: Double): BooleanReturns trueif this value is greater than x,falseotherwise.
-    def >(x: Float): BooleanReturns trueif this value is greater than x,falseotherwise.
-    def >(x: Long): BooleanReturns trueif this value is greater than x,falseotherwise.
-    def >(x: Int): BooleanReturns trueif this value is greater than x,falseotherwise.
-    def >(x: Char): BooleanReturns trueif this value is greater than x,falseotherwise.
-    def >(x: Short): BooleanReturns trueif this value is greater than x,falseotherwise.
-    def >(x: Byte): BooleanReturns trueif this value is greater than x,falseotherwise.
-    def >=(x: Double): BooleanReturns trueif this value is greater than or equal to x,falseotherwise.
-    def >=(x: Float): BooleanReturns trueif this value is greater than or equal to x,falseotherwise.
-    def >=(x: Long): BooleanReturns trueif this value is greater than or equal to x,falseotherwise.
-    def >=(x: Int): BooleanReturns trueif this value is greater than or equal to x,falseotherwise.
-    def >=(x: Char): BooleanReturns trueif this value is greater than or equal to x,falseotherwise.
-    def >=(x: Short): BooleanReturns trueif this value is greater than or equal to x,falseotherwise.
-    def >=(x: Byte): BooleanReturns trueif this value is greater than or equal to x,falseotherwise.
-    def >>(x: Long): IntReturns this value bit-shifted left by the specified number of bits, filling in the right bits with the same value as the left-most bit of this. Returns this value bit-shifted left by the specified number of bits, filling in the right bits with the same value as the left-most bit of this. The effect of this is to retain the sign of the value. - -21 >> 3 == -3 // in binary: 11111111 11111111 11111111 11101011 >> 3 == // 11111111 11111111 11111111 11111101 
 Example:
-    def >>(x: Int): IntReturns this value bit-shifted left by the specified number of bits, filling in the right bits with the same value as the left-most bit of this. Returns this value bit-shifted left by the specified number of bits, filling in the right bits with the same value as the left-most bit of this. The effect of this is to retain the sign of the value. - -21 >> 3 == -3 // in binary: 11111111 11111111 11111111 11101011 >> 3 == // 11111111 11111111 11111111 11111101 
 Example:
-    def >>>(x: Long): IntReturns this value bit-shifted right by the specified number of bits, filling the new left bits with zeroes. Returns this value bit-shifted right by the specified number of bits, filling the new left bits with zeroes. - 21 >>> 3 == 2 // in binary: 010101 >>> 3 == 010 ,
- -21 >>> 3 == 536870909 // in binary: 11111111 11111111 11111111 11101011 >>> 3 == // 00011111 11111111 11111111 11111101 
 Examples:
-    def >>>(x: Int): IntReturns this value bit-shifted right by the specified number of bits, filling the new left bits with zeroes. Returns this value bit-shifted right by the specified number of bits, filling the new left bits with zeroes. - 21 >>> 3 == 2 // in binary: 010101 >>> 3 == 010 ,
- -21 >>> 3 == 536870909 // in binary: 11111111 11111111 11111111 11101011 >>> 3 == // 00011111 11111111 11111111 11111101 
 Examples:
-    def ^(x: Long): LongReturns the bitwise XOR of this value and x.Returns the bitwise XOR of this value and x.- (0xf0 ^ 0xaa) == 0x5a // in binary: 11110000 // ^ 10101010 // -------- // 01011010 
 Example:
-    def ^(x: Int): IntReturns the bitwise XOR of this value and x.Returns the bitwise XOR of this value and x.- (0xf0 ^ 0xaa) == 0x5a // in binary: 11110000 // ^ 10101010 // -------- // 01011010 
 Example:
-    def ^(x: Char): IntReturns the bitwise XOR of this value and x.Returns the bitwise XOR of this value and x.- (0xf0 ^ 0xaa) == 0x5a // in binary: 11110000 // ^ 10101010 // -------- // 01011010 
 Example:
-    def ^(x: Short): IntReturns the bitwise XOR of this value and x.Returns the bitwise XOR of this value and x.- (0xf0 ^ 0xaa) == 0x5a // in binary: 11110000 // ^ 10101010 // -------- // 01011010 
 Example:
-    def ^(x: Byte): IntReturns the bitwise XOR of this value and x.Returns the bitwise XOR of this value and x.- (0xf0 ^ 0xaa) == 0x5a // in binary: 11110000 // ^ 10101010 // -------- // 01011010 
 Example:
-   final  def asInstanceOf[T0]: T0- Definition Classes
- Any
 
-    def ensuringValid(f: (Int) => Int): NegIntApplies the passed Int => Intfunction to the underlyingIntvalue, and if the result is positive, returns the result wrapped in aNegInt, else throwsAssertionError.Applies the passed Int => Intfunction to the underlyingIntvalue, and if the result is positive, returns the result wrapped in aNegInt, else throwsAssertionError.A factory/assertion method that produces a PosIntgiven a validIntvalue, or throwsAssertionError, if given an invalidIntvalue.Note: you should use this method only when you are convinced that it will always succeed, i.e., never throw an exception. It is good practice to add a comment near the invocation of this method indicating why you think it will always succeed to document your reasoning. If you are not sure an ensuringValidcall will always succeed, you should use one of the other factory or validation methods provided on this object instead:isValid,tryingValid,passOrElse,goodOrElse, orrightOrElse.This method will inspect the result of applying the given function to this NegInt's underlyingIntvalue and if the result is negative, it will return aNegIntrepresenting that value. Otherwise, theIntvalue returned by the given function is not negative, so this method will throwAssertionError.This method differs from a vanilla assertorensuringcall in that you get something you didn't already have if the assertion succeeds: a type that promises anIntis negative. With this method, you are asserting that you are convinced the result of the computation represented by applying the given function to thisNegInt's value will not overflow. Instead of overflowing silently likeInt, this method will signal an overflow with a loudAssertionError.- f
- the - Int => Intfunction to apply to this- NegInt's underlying- Intvalue.
- returns
- the result of applying this - NegInt's underlying- Intvalue to to the passed function, wrapped in a- NegIntif it is negative (else throws- AssertionError).
 - Exceptions thrown
- AssertionErrorif the result of applying this- NegInt's underlying- Intvalue to to the passed function is not negative.
 
-    def getClass(): Class[_ <: AnyVal]- Definition Classes
- AnyVal → Any
 
-   final  def isInstanceOf[T0]: Boolean- Definition Classes
- Any
 
-    def max(that: NegInt): NegIntReturns thisifthis > thatorthatotherwise.
-    def min(that: NegInt): NegIntReturns thisifthis < thatorthatotherwise.
-    def to(end: Int, step: Int): InclusiveCreate an inclusive Rangefrom thisNegIntvalue to the specifiedendwith the specifiedstepvalue.Create an inclusive Rangefrom thisNegIntvalue to the specifiedendwith the specifiedstepvalue.- end
- The final bound of the range to make. 
- step
- The number to increase by for each step of the range. 
- returns
- A scala.collection.immutable.Range from - thisup to and including- end.
 
-    def to(end: Int): InclusiveCreate an inclusive Rangefrom thisNegIntvalue to the specifiedendwith step value 1.Create an inclusive Rangefrom thisNegIntvalue to the specifiedendwith step value 1.- end
- The final bound of the range to make. 
- returns
- A scala.collection.immutable.Range from - thisup to and including- end.
 
-    def toBinaryString: StringReturns a string representation of this NegInt's underlyingIntas an unsigned integer in base 2.Returns a string representation of this NegInt's underlyingIntas an unsigned integer in base 2.The unsigned integer value is the argument plus 232 if this NegInt's underlyingIntis negative; otherwise it is equal to the underlyingInt. This value is converted to a string of ASCII digits in binary (base 2) with no extra leading0s. If the unsigned magnitude is zero, it is represented by a single zero character'0'('\u0030'); otherwise, the first character of the representation of the unsigned magnitude will not be the zero character. The characters'0'('\u0030') and'1'('\u0031') are used as binary digits.- returns
- the string representation of the unsigned integer value represented by this - NegInt's underlying- Intin binary (base 2).
 
-    def toByte: ByteConverts this NegIntto aByte.
-    def toChar: CharConverts this NegIntto aChar.
-    def toDouble: DoubleConverts this NegIntto aDouble.
-    def toFloat: FloatConverts this NegIntto aFloat.
-    def toHexString: StringReturns a string representation of this NegInt's underlyingIntas an unsigned integer in base 16.Returns a string representation of this NegInt's underlyingIntas an unsigned integer in base 16.The unsigned integer value is the argument plus 232 if this NegInt's underlyingIntis negative; otherwise, it is equal to the thisNegInt's underlyingIntThis value is converted to a string of ASCII digits in hexadecimal (base 16) with no extra leading0s. If the unsigned magnitude is zero, it is represented by a single zero character'0'('\u0030'); otherwise, the first character of the representation of the unsigned magnitude will not be the zero character. The following characters are used as hexadecimal digits:0123456789abcdefThese are the characters '\u0030'through'\u0039'and'\u0061'through'\u0066'. If uppercase letters are desired, thetoUpperCasemethod may be called on the result.- returns
- the string representation of the unsigned integer value represented by this - NegInt's underlying- Intin hexadecimal (base 16).
 
-    def toInt: IntConverts this NegIntto anInt.
-    def toLong: LongConverts this NegIntto aLong.
-    def toOctalString: StringReturns a string representation of this NegInt's underlyingIntas an unsigned integer in base 8.Returns a string representation of this NegInt's underlyingIntas an unsigned integer in base 8.The unsigned integer value is this NegInt's underlyingIntplus 232 if the underlyingIntis negative; otherwise, it is equal to the underlyingInt. This value is converted to a string of ASCII digits in octal (base 8) with no extra leading0s.If the unsigned magnitude is zero, it is represented by a single zero character '0'('\u0030'); otherwise, the first character of the representation of the unsigned magnitude will not be the zero character. The following characters are used as octal digits:01234567These are the characters '\u0030'through'\u0037'.- returns
- the string representation of the unsigned integer value represented by this - NegInt's underlying- Intin octal (base 8).
 
-    def toShort: ShortConverts this NegIntto aShort.
-    def toString(): StringA string representation of this NegInt.A string representation of this NegInt.- Definition Classes
- NegInt → Any
 
-    def unary_+: NegIntReturns this value, unmodified. 
-    def unary_-: IntReturns the negation of this value. 
-    def unary_~: IntReturns the bitwise negation of this value. Returns the bitwise negation of this value. - ~5 == -6 // in binary: ~00000101 == // 11111010 
 Example:
-    def until(end: Int, step: Int): RangeCreate a Rangefrom thisNegIntvalue until the specifiedend(exclusive) with the specifiedstepvalue.Create a Rangefrom thisNegIntvalue until the specifiedend(exclusive) with the specifiedstepvalue.- end
- The final bound of the range to make. 
- step
- The number to increase by for each step of the range. 
- returns
- A scala.collection.immutable.Range from - thisup to but not including- end.
 
-    def until(end: Int): RangeCreate a Rangefrom thisNegIntvalue until the specifiedend(exclusive) with step value 1.Create a Rangefrom thisNegIntvalue until the specifiedend(exclusive) with step value 1.- end
- The final bound of the range to make. 
- returns
- A scala.collection.immutable.Range from - thisup to but not including- end.
 
-  val value: Int
-    def |(x: Long): LongReturns the bitwise OR of this value and x.Returns the bitwise OR of this value and x.- (0xf0 | 0xaa) == 0xfa // in binary: 11110000 // | 10101010 // -------- // 11111010 
 Example:
-    def |(x: Int): IntReturns the bitwise OR of this value and x.Returns the bitwise OR of this value and x.- (0xf0 | 0xaa) == 0xfa // in binary: 11110000 // | 10101010 // -------- // 11111010 
 Example:
-    def |(x: Char): IntReturns the bitwise OR of this value and x.Returns the bitwise OR of this value and x.- (0xf0 | 0xaa) == 0xfa // in binary: 11110000 // | 10101010 // -------- // 11111010 
 Example:
-    def |(x: Short): IntReturns the bitwise OR of this value and x.Returns the bitwise OR of this value and x.- (0xf0 | 0xaa) == 0xfa // in binary: 11110000 // | 10101010 // -------- // 11111010 
 Example:
-    def |(x: Byte): IntReturns the bitwise OR of this value and x.Returns the bitwise OR of this value and x.- (0xf0 | 0xaa) == 0xfa // in binary: 11110000 // | 10101010 // -------- // 11111010 
 Example: