final class NegZInt extends AnyVal
An AnyVal for non-positive Ints.
Because NegZInt is an AnyVal it will usually be
as efficient as an Int, being boxed only when an Int
would have been boxed.
The NegZInt.apply factory method is implemented in terms of a macro that
checks literals for validity at compile time. Calling NegZInt.apply with
a literal Int value will either produce a valid NegZInt instance
at run time or an error at compile time. Here's an example:
scala> import anyvals._
import anyvals._
scala> NegZInt(-42)
res0: org.scalactic.anyvals.NegZInt = NegZInt(-42)
scala> NegZInt(1)
<console>:14: error: NegZInt.apply can only be invoked on a non-positive (i <= 0) literal, like NegZInt(-42).
NegZInt(1)
^
NegZInt.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 NegZInt.apply, you'll get a compiler error that suggests you use a different factor method,
NegZInt.from, instead:
scala> val x = 1
x: Int = 1
scala> NegZInt(x)
<console>:15: error: NegZInt.apply can only be invoked on a non-positive integer literal, like NegZInt(-42). Please use NegZInt.from instead.
NegZInt(x)
^
The NegZInt.from factory method will inspect the value at runtime and return an Option[NegZInt]. If
the value is valid, NegZInt.from will return a Some[NegZInt], else it will return a None.
Here's an example:
scala> NegZInt.from(x) res3: Option[org.scalactic.anyvals.NegZInt] = Some(NegZInt(1)) scala> val y = 0 y: Int = 0 scala> NegZInt.from(y) res4: Option[org.scalactic.anyvals.NegZInt] = None
The NegZInt.apply factory method is marked implicit, so that you can pass literal Ints
into methods that require NegZInt, and get the same compile-time checking you get when calling
NegZInt.apply explicitly. Here's an example:
scala> def invert(pos: NegZInt): Int = Int.MaxValue - pos
invert: (pos: org.scalactic.anyvals.NegZInt)Int
scala> invert(1)
res0: Int = 2147483646
scala> invert(Int.MaxValue)
res1: Int = 0
scala> invert(0)
<console>:15: error: NegZInt.apply can only be invoked on a non-positive (i <= 0) integer literal, like NegZInt(-42).
invert(0)
^
scala> invert(-1)
<console>:15: error: NegZInt.apply can only be invoked on a non-positive (i <= 0) integer literal, like NegZInt(-42).
invert(-1)
^
This example also demonstrates that the NegZInt 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 NegZInt 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 NegZInt (the type of pos),
you can still subtract pos, because the NegZInt will be implicitly widened to Int.
- Source
- NegZInt.scala
- Alphabetic
- By Inheritance
- NegZInt
- 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): Double
Returns the remainder of the division of this value by
x. - def %(x: Float): Float
Returns the remainder of the division of this value by
x. - def %(x: Long): Long
Returns the remainder of the division of this value by
x. - def %(x: Int): Int
Returns the remainder of the division of this value by
x. - def %(x: Char): Int
Returns the remainder of the division of this value by
x. - def %(x: Short): Int
Returns the remainder of the division of this value by
x. - def %(x: Byte): Int
Returns the remainder of the division of this value by
x. - def &(x: Long): Long
Returns 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): Int
Returns 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): Int
Returns 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): Int
Returns 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): Int
Returns 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): Double
Returns the product of this value and
x. - def *(x: Float): Float
Returns the product of this value and
x. - def *(x: Long): Long
Returns the product of this value and
x. - def *(x: Int): Int
Returns the product of this value and
x. - def *(x: Char): Int
Returns the product of this value and
x. - def *(x: Short): Int
Returns the product of this value and
x. - def *(x: Byte): Int
Returns the product of this value and
x. - def +(x: Double): Double
Returns the sum of this value and
x. - def +(x: Float): Float
Returns the sum of this value and
x. - def +(x: Long): Long
Returns the sum of this value and
x. - def +(x: Int): Int
Returns the sum of this value and
x. - def +(x: Char): Int
Returns the sum of this value and
x. - def +(x: Short): Int
Returns the sum of this value and
x. - def +(x: Byte): Int
Returns the sum of this value and
x. - def +(x: String): String
Converts this
NegZInt's value to a string then concatenates the given string. - def -(x: Double): Double
Returns the difference of this value and
x. - def -(x: Float): Float
Returns the difference of this value and
x. - def -(x: Long): Long
Returns the difference of this value and
x. - def -(x: Int): Int
Returns the difference of this value and
x. - def -(x: Char): Int
Returns the difference of this value and
x. - def -(x: Short): Int
Returns the difference of this value and
x. - def -(x: Byte): Int
Returns the difference of this value and
x. - def /(x: Double): Double
Returns the quotient of this value and
x. - def /(x: Float): Float
Returns the quotient of this value and
x. - def /(x: Long): Long
Returns the quotient of this value and
x. - def /(x: Int): Int
Returns the quotient of this value and
x. - def /(x: Char): Int
Returns the quotient of this value and
x. - def /(x: Short): Int
Returns the quotient of this value and
x. - def /(x: Byte): Int
Returns the quotient of this value and
x. - def <(x: Double): Boolean
Returns
trueif this value is less than x,falseotherwise. - def <(x: Float): Boolean
Returns
trueif this value is less than x,falseotherwise. - def <(x: Long): Boolean
Returns
trueif this value is less than x,falseotherwise. - def <(x: Int): Boolean
Returns
trueif this value is less than x,falseotherwise. - def <(x: Char): Boolean
Returns
trueif this value is less than x,falseotherwise. - def <(x: Short): Boolean
Returns
trueif this value is less than x,falseotherwise. - def <(x: Byte): Boolean
Returns
trueif this value is less than x,falseotherwise. - def <<(x: Long): Int
Returns 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): Int
Returns 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): Boolean
Returns
trueif this value is less than or equal to x,falseotherwise. - def <=(x: Float): Boolean
Returns
trueif this value is less than or equal to x,falseotherwise. - def <=(x: Long): Boolean
Returns
trueif this value is less than or equal to x,falseotherwise. - def <=(x: Int): Boolean
Returns
trueif this value is less than or equal to x,falseotherwise. - def <=(x: Char): Boolean
Returns
trueif this value is less than or equal to x,falseotherwise. - def <=(x: Short): Boolean
Returns
trueif this value is less than or equal to x,falseotherwise. - def <=(x: Byte): Boolean
Returns
trueif this value is less than or equal to x,falseotherwise. - final def ==(arg0: Any): Boolean
- Definition Classes
- Any
- def >(x: Double): Boolean
Returns
trueif this value is greater than x,falseotherwise. - def >(x: Float): Boolean
Returns
trueif this value is greater than x,falseotherwise. - def >(x: Long): Boolean
Returns
trueif this value is greater than x,falseotherwise. - def >(x: Int): Boolean
Returns
trueif this value is greater than x,falseotherwise. - def >(x: Char): Boolean
Returns
trueif this value is greater than x,falseotherwise. - def >(x: Short): Boolean
Returns
trueif this value is greater than x,falseotherwise. - def >(x: Byte): Boolean
Returns
trueif this value is greater than x,falseotherwise. - def >=(x: Double): Boolean
Returns
trueif this value is greater than or equal to x,falseotherwise. - def >=(x: Float): Boolean
Returns
trueif this value is greater than or equal to x,falseotherwise. - def >=(x: Long): Boolean
Returns
trueif this value is greater than or equal to x,falseotherwise. - def >=(x: Int): Boolean
Returns
trueif this value is greater than or equal to x,falseotherwise. - def >=(x: Char): Boolean
Returns
trueif this value is greater than or equal to x,falseotherwise. - def >=(x: Short): Boolean
Returns
trueif this value is greater than or equal to x,falseotherwise. - def >=(x: Byte): Boolean
Returns
trueif this value is greater than or equal to x,falseotherwise. - def >>(x: Long): Int
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.
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): Int
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.
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): Int
Returns 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): Int
Returns 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): Long
Returns 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): Int
Returns 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): Int
Returns 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): Int
Returns 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): Int
Returns 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): NegZInt
Applies the passed
Int => Intfunction to the underlyingIntvalue, and if the result is positive, returns the result wrapped in aNegZInt, else throwsAssertionError.Applies the passed
Int => Intfunction to the underlyingIntvalue, and if the result is positive, returns the result wrapped in aNegZInt, 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
NegZInt's underlyingIntvalue and if the result is non-positive, it will return aNegZIntrepresenting that value. Otherwise, theIntvalue returned by the given function is not non-positive, 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 non-positive. With this method, you are asserting that you are convinced the result of the computation represented by applying the given function to thisNegZInt'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 thisNegZInt's underlyingIntvalue.- returns
the result of applying this
NegZInt's underlyingIntvalue to to the passed function, wrapped in aNegZIntif it is non-positive (else throwsAssertionError).
- Exceptions thrown
AssertionErrorif the result of applying thisNegZInt's underlyingIntvalue to to the passed function is not non-positive.
- def getClass(): Class[_ <: AnyVal]
- Definition Classes
- AnyVal → Any
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def max(that: NegZInt): NegZInt
Returns
thisifthis > thatorthatotherwise. - def min(that: NegZInt): NegZInt
Returns
thisifthis < thatorthatotherwise. - def to(end: Int, step: Int): Inclusive
Create an inclusive
Rangefrom thisNegZIntvalue to the specifiedendwith the specifiedstepvalue.Create an inclusive
Rangefrom thisNegZIntvalue 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 includingend.
- def to(end: Int): Inclusive
Create an inclusive
Rangefrom thisNegZIntvalue to the specifiedendwith step value 1.Create an inclusive
Rangefrom thisNegZIntvalue 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 includingend.
- def toBinaryString: String
Returns a string representation of this
NegZInt's underlyingIntas an unsigned integer in base 2.Returns a string representation of this
NegZInt's underlyingIntas an unsigned integer in base 2.The unsigned integer value is the argument plus 232 if this
NegZInt'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
NegZInt's underlyingIntin binary (base 2).
- def toByte: Byte
Converts this
NegZIntto aByte. - def toChar: Char
Converts this
NegZIntto aChar. - def toDouble: Double
Converts this
NegZIntto aDouble. - def toFloat: Float
Converts this
NegZIntto aFloat. - def toHexString: String
Returns a string representation of this
NegZInt's underlyingIntas an unsigned integer in base 16.Returns a string representation of this
NegZInt's underlyingIntas an unsigned integer in base 16.The unsigned integer value is the argument plus 232 if this
NegZInt's underlyingIntis negative; otherwise, it is equal to the thisNegZInt'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
NegZInt's underlyingIntin hexadecimal (base 16).
- def toInt: Int
Converts this
NegZIntto anInt. - def toLong: Long
Converts this
NegZIntto aLong. - def toOctalString: String
Returns a string representation of this
NegZInt's underlyingIntas an unsigned integer in base 8.Returns a string representation of this
NegZInt's underlyingIntas an unsigned integer in base 8.The unsigned integer value is this
NegZInt'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
NegZInt's underlyingIntin octal (base 8).
- def toShort: Short
Converts this
NegZIntto aShort. - def toString(): String
A string representation of this
NegZInt.A string representation of this
NegZInt.- Definition Classes
- NegZInt → Any
- def unary_+: NegZInt
Returns this value, unmodified.
- def unary_-: Int
Returns the negation of this value.
- def unary_~: Int
Returns 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): Range
Create a
Rangefrom thisNegZIntvalue until the specifiedend(exclusive) with the specifiedstepvalue.Create a
Rangefrom thisNegZIntvalue 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 includingend.
- def until(end: Int): Range
Create a
Rangefrom thisNegZIntvalue until the specifiedend(exclusive) with step value 1.Create a
Rangefrom thisNegZIntvalue 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 includingend.
- val value: Int
- def |(x: Long): Long
Returns 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): Int
Returns 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): Int
Returns 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): Int
Returns 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): Int
Returns 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: