final class NonZeroInt extends AnyVal

An AnyVal for non-zero Ints.

Note: a NonZeroInt may not equal 0.

Because NonZeroInt is an AnyVal it will usually be as efficient as an Int, being boxed only when an Int would have been boxed.

The NonZeroInt.apply factory method is implemented in terms of a macro that checks literals for validity at compile time. Calling NonZeroInt.apply with a literal Int value will either produce a valid NonZeroInt instance at run time or an error at compile time. Here's an example:

scala> import anyvals._
import anyvals._

scala> NonZeroInt(42)
res0: org.scalactic.anyvals.NonZeroInt = NonZeroInt(42)

scala> NonZeroInt(0)
<console>:14: error: NonZeroInt.apply can only be invoked on a non-zero (i != 0) literal, like NonZeroInt(42).
              NonZeroInt(0)
                    ^

NonZeroInt.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 NonZeroInt.apply, you'll get a compiler error that suggests you use a different factor method, NonZeroInt.from, instead:

scala> val x = 1
x: Int = 1

scala> NonZeroInt(x)
<console>:15: error: NonZeroInt.apply can only be invoked on a non-zero integer literal, like NonZeroInt(42). Please use NonZeroInt.from instead.
              NonZeroInt(x)
                    ^

The NonZeroInt.from factory method will inspect the value at runtime and return an Option[NonZeroInt]. If the value is valid, NonZeroInt.from will return a Some[NonZeroInt], else it will return a None. Here's an example:

scala> NonZeroInt.from(x)
res3: Option[org.scalactic.anyvals.NonZeroInt] = Some(NonZeroInt(1))

scala> val y = 0
y: Int = 0

scala> NonZeroInt.from(y)
res4: Option[org.scalactic.anyvals.NonZeroInt] = None

The NonZeroInt.apply factory method is marked implicit, so that you can pass literal Ints into methods that require NonZeroInt, and get the same compile-time checking you get when calling NonZeroInt.apply explicitly. Here's an example:

scala> def invert(pos: NonZeroInt): Int = Int.MaxValue - pos
invert: (pos: org.scalactic.anyvals.NonZeroInt)Int

scala> invert(1)
res0: Int = 2147483646

scala> invert(Int.MaxValue)
res1: Int = 0

scala> invert(0)
<console>:15: error: NonZeroInt.apply can only be invoked on a non-zero (i != 0) integer literal, like NonZeroInt(42).
              invert(0)
                     ^

scala> invert(-1)
<console>:15: error: NonZeroInt.apply can only be invoked on a non-zero (i != 0) integer literal, like NonZeroInt(42).
              invert(-1)
                      ^

This example also demonstrates that the NonZeroInt 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 NonZeroInt 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 NonZeroInt (the type of pos), you can still subtract pos, because the NonZeroInt will be implicitly widened to Int.

Source
NonZeroInt.scala
Linear Supertypes
AnyVal, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. NonZeroInt
  2. AnyVal
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    Any
  2. final def ##: Int
    Definition Classes
    Any
  3. def %(x: Double): Double

    Returns the remainder of the division of this value by x.

  4. def %(x: Float): Float

    Returns the remainder of the division of this value by x.

  5. def %(x: Long): Long

    Returns the remainder of the division of this value by x.

  6. def %(x: Int): Int

    Returns the remainder of the division of this value by x.

  7. def %(x: Char): Int

    Returns the remainder of the division of this value by x.

  8. def %(x: Short): Int

    Returns the remainder of the division of this value by x.

  9. def %(x: Byte): Int

    Returns the remainder of the division of this value by x.

  10. def &(x: Long): Long

    Returns the bitwise AND of this value and x.

    Returns the bitwise AND of this value and x.

    Example:
    1. (0xf0 & 0xaa) == 0xa0
      // in binary: 11110000
      // & 10101010
      // --------
      // 10100000
  11. def &(x: Int): Int

    Returns the bitwise AND of this value and x.

    Returns the bitwise AND of this value and x.

    Example:
    1. (0xf0 & 0xaa) == 0xa0
      // in binary: 11110000
      // & 10101010
      // --------
      // 10100000
  12. def &(x: Char): Int

    Returns the bitwise AND of this value and x.

    Returns the bitwise AND of this value and x.

    Example:
    1. (0xf0 & 0xaa) == 0xa0
      // in binary: 11110000
      // & 10101010
      // --------
      // 10100000
  13. def &(x: Short): Int

    Returns the bitwise AND of this value and x.

    Returns the bitwise AND of this value and x.

    Example:
    1. (0xf0 & 0xaa) == 0xa0
      // in binary: 11110000
      // & 10101010
      // --------
      // 10100000
  14. def &(x: Byte): Int

    Returns the bitwise AND of this value and x.

    Returns the bitwise AND of this value and x.

    Example:
    1. (0xf0 & 0xaa) == 0xa0
      // in binary: 11110000
      // & 10101010
      // --------
      // 10100000
  15. def *(x: Double): Double

    Returns the product of this value and x.

  16. def *(x: Float): Float

    Returns the product of this value and x.

  17. def *(x: Long): Long

    Returns the product of this value and x.

  18. def *(x: Int): Int

    Returns the product of this value and x.

  19. def *(x: Char): Int

    Returns the product of this value and x.

  20. def *(x: Short): Int

    Returns the product of this value and x.

  21. def *(x: Byte): Int

    Returns the product of this value and x.

  22. def +(x: Double): Double

    Returns the sum of this value and x.

  23. def +(x: Float): Float

    Returns the sum of this value and x.

  24. def +(x: Long): Long

    Returns the sum of this value and x.

  25. def +(x: Int): Int

    Returns the sum of this value and x.

  26. def +(x: Char): Int

    Returns the sum of this value and x.

  27. def +(x: Short): Int

    Returns the sum of this value and x.

  28. def +(x: Byte): Int

    Returns the sum of this value and x.

  29. def +(x: String): String

    Converts this NonZeroInt's value to a string then concatenates the given string.

  30. def -(x: Double): Double

    Returns the difference of this value and x.

  31. def -(x: Float): Float

    Returns the difference of this value and x.

  32. def -(x: Long): Long

    Returns the difference of this value and x.

  33. def -(x: Int): Int

    Returns the difference of this value and x.

  34. def -(x: Char): Int

    Returns the difference of this value and x.

  35. def -(x: Short): Int

    Returns the difference of this value and x.

  36. def -(x: Byte): Int

    Returns the difference of this value and x.

  37. def /(x: Double): Double

    Returns the quotient of this value and x.

  38. def /(x: Float): Float

    Returns the quotient of this value and x.

  39. def /(x: Long): Long

    Returns the quotient of this value and x.

  40. def /(x: Int): Int

    Returns the quotient of this value and x.

  41. def /(x: Char): Int

    Returns the quotient of this value and x.

  42. def /(x: Short): Int

    Returns the quotient of this value and x.

  43. def /(x: Byte): Int

    Returns the quotient of this value and x.

  44. def <(x: Double): Boolean

    Returns true if this value is less than x, false otherwise.

  45. def <(x: Float): Boolean

    Returns true if this value is less than x, false otherwise.

  46. def <(x: Long): Boolean

    Returns true if this value is less than x, false otherwise.

  47. def <(x: Int): Boolean

    Returns true if this value is less than x, false otherwise.

  48. def <(x: Char): Boolean

    Returns true if this value is less than x, false otherwise.

  49. def <(x: Short): Boolean

    Returns true if this value is less than x, false otherwise.

  50. def <(x: Byte): Boolean

    Returns true if this value is less than x, false otherwise.

  51. 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.

    Example:
    1. 6 << 3 == 48 // in binary: 0110 << 3 == 0110000
  52. 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.

    Example:
    1. 6 << 3 == 48 // in binary: 0110 << 3 == 0110000
  53. def <=(x: Double): Boolean

    Returns true if this value is less than or equal to x, false otherwise.

  54. def <=(x: Float): Boolean

    Returns true if this value is less than or equal to x, false otherwise.

  55. def <=(x: Long): Boolean

    Returns true if this value is less than or equal to x, false otherwise.

  56. def <=(x: Int): Boolean

    Returns true if this value is less than or equal to x, false otherwise.

  57. def <=(x: Char): Boolean

    Returns true if this value is less than or equal to x, false otherwise.

  58. def <=(x: Short): Boolean

    Returns true if this value is less than or equal to x, false otherwise.

  59. def <=(x: Byte): Boolean

    Returns true if this value is less than or equal to x, false otherwise.

  60. final def ==(arg0: Any): Boolean
    Definition Classes
    Any
  61. def >(x: Double): Boolean

    Returns true if this value is greater than x, false otherwise.

  62. def >(x: Float): Boolean

    Returns true if this value is greater than x, false otherwise.

  63. def >(x: Long): Boolean

    Returns true if this value is greater than x, false otherwise.

  64. def >(x: Int): Boolean

    Returns true if this value is greater than x, false otherwise.

  65. def >(x: Char): Boolean

    Returns true if this value is greater than x, false otherwise.

  66. def >(x: Short): Boolean

    Returns true if this value is greater than x, false otherwise.

  67. def >(x: Byte): Boolean

    Returns true if this value is greater than x, false otherwise.

  68. def >=(x: Double): Boolean

    Returns true if this value is greater than or equal to x, false otherwise.

  69. def >=(x: Float): Boolean

    Returns true if this value is greater than or equal to x, false otherwise.

  70. def >=(x: Long): Boolean

    Returns true if this value is greater than or equal to x, false otherwise.

  71. def >=(x: Int): Boolean

    Returns true if this value is greater than or equal to x, false otherwise.

  72. def >=(x: Char): Boolean

    Returns true if this value is greater than or equal to x, false otherwise.

  73. def >=(x: Short): Boolean

    Returns true if this value is greater than or equal to x, false otherwise.

  74. def >=(x: Byte): Boolean

    Returns true if this value is greater than or equal to x, false otherwise.

  75. 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.

    Example:
    1. -21 >> 3 == -3
      // in binary: 11111111 11111111 11111111 11101011 >> 3 ==
      // 11111111 11111111 11111111 11111101
  76. 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.

    Example:
    1. -21 >> 3 == -3
      // in binary: 11111111 11111111 11111111 11101011 >> 3 ==
      // 11111111 11111111 11111111 11111101
  77. 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.

    Examples:
    1. 21 >>> 3 == 2 // in binary: 010101 >>> 3 == 010
    2. ,
    3. -21 >>> 3 == 536870909
      // in binary: 11111111 11111111 11111111 11101011 >>> 3 ==
      // 00011111 11111111 11111111 11111101
  78. 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.

    Examples:
    1. 21 >>> 3 == 2 // in binary: 010101 >>> 3 == 010
    2. ,
    3. -21 >>> 3 == 536870909
      // in binary: 11111111 11111111 11111111 11101011 >>> 3 ==
      // 00011111 11111111 11111111 11111101
  79. def ^(x: Long): Long

    Returns the bitwise XOR of this value and x.

    Returns the bitwise XOR of this value and x.

    Example:
    1. (0xf0 ^ 0xaa) == 0x5a
      // in binary: 11110000
      // ^ 10101010
      // --------
      // 01011010
  80. def ^(x: Int): Int

    Returns the bitwise XOR of this value and x.

    Returns the bitwise XOR of this value and x.

    Example:
    1. (0xf0 ^ 0xaa) == 0x5a
      // in binary: 11110000
      // ^ 10101010
      // --------
      // 01011010
  81. def ^(x: Char): Int

    Returns the bitwise XOR of this value and x.

    Returns the bitwise XOR of this value and x.

    Example:
    1. (0xf0 ^ 0xaa) == 0x5a
      // in binary: 11110000
      // ^ 10101010
      // --------
      // 01011010
  82. def ^(x: Short): Int

    Returns the bitwise XOR of this value and x.

    Returns the bitwise XOR of this value and x.

    Example:
    1. (0xf0 ^ 0xaa) == 0x5a
      // in binary: 11110000
      // ^ 10101010
      // --------
      // 01011010
  83. def ^(x: Byte): Int

    Returns the bitwise XOR of this value and x.

    Returns the bitwise XOR of this value and x.

    Example:
    1. (0xf0 ^ 0xaa) == 0x5a
      // in binary: 11110000
      // ^ 10101010
      // --------
      // 01011010
  84. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  85. def ensuringValid(f: (Int) => Int): NonZeroInt

    Applies the passed Int => Int function to the underlying Int value, and if the result is positive, returns the result wrapped in a NonZeroInt, else throws AssertionError.

    Applies the passed Int => Int function to the underlying Int value, and if the result is positive, returns the result wrapped in a NonZeroInt, else throws AssertionError.

    A factory/assertion method that produces a PosInt given a valid Int value, or throws AssertionError, if given an invalid Int value.

    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 ensuringValid call will always succeed, you should use one of the other factory or validation methods provided on this object instead: isValid, tryingValid, passOrElse, goodOrElse, or rightOrElse.

    This method will inspect the result of applying the given function to this NonZeroInt's underlying Int value and if the result is non-zero, it will return a NonZeroInt representing that value. Otherwise, the Int value returned by the given function is not non-zero, so this method will throw AssertionError.

    This method differs from a vanilla assert or ensuring call in that you get something you didn't already have if the assertion succeeds: a type that promises an Int is non-zero. With this method, you are asserting that you are convinced the result of the computation represented by applying the given function to this NonZeroInt's value will not overflow. Instead of overflowing silently like Int, this method will signal an overflow with a loud AssertionError.

    f

    the Int => Int function to apply to this NonZeroInt's underlying Int value.

    returns

    the result of applying this NonZeroInt's underlying Int value to to the passed function, wrapped in a NonZeroInt if it is non-zero (else throws AssertionError).

    Exceptions thrown

    AssertionError if the result of applying this NonZeroInt's underlying Int value to to the passed function is not non-zero.

  86. def getClass(): Class[_ <: AnyVal]
    Definition Classes
    AnyVal → Any
  87. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  88. def max(that: NonZeroInt): NonZeroInt

    Returns this if this > that or that otherwise.

  89. def min(that: NonZeroInt): NonZeroInt

    Returns this if this < that or that otherwise.

  90. def to(end: Int, step: Int): Inclusive

    Create an inclusive Range from this NonZeroInt value to the specified end with the specified step value.

    Create an inclusive Range from this NonZeroInt value to the specified end with the specified step value.

    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 this up to and including end.

  91. def to(end: Int): Inclusive

    Create an inclusive Range from this NonZeroInt value to the specified end with step value 1.

    Create an inclusive Range from this NonZeroInt value to the specified end with step value 1.

    end

    The final bound of the range to make.

    returns

    A scala.collection.immutable.Range from this up to and including end.

  92. def toBinaryString: String

    Returns a string representation of this NonZeroInt's underlying Int as an unsigned integer in base 2.

    Returns a string representation of this NonZeroInt's underlying Int as an unsigned integer in base 2.

    The unsigned integer value is the argument plus 232 if this NonZeroInt's underlying Int is negative; otherwise it is equal to the underlying Int. This value is converted to a string of ASCII digits in binary (base 2) with no extra leading 0s. 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 NonZeroInt's underlying Int in binary (base 2).

  93. def toByte: Byte

    Converts this NonZeroInt to a Byte.

  94. def toChar: Char

    Converts this NonZeroInt to a Char.

  95. def toDouble: Double

    Converts this NonZeroInt to a Double.

  96. def toFloat: Float

    Converts this NonZeroInt to a Float.

  97. def toHexString: String

    Returns a string representation of this NonZeroInt's underlying Int as an unsigned integer in base 16.

    Returns a string representation of this NonZeroInt's underlying Int as an unsigned integer in base 16.

    The unsigned integer value is the argument plus 232 if this NonZeroInt's underlying Int is negative; otherwise, it is equal to the this NonZeroInt's underlying Int This value is converted to a string of ASCII digits in hexadecimal (base 16) with no extra leading 0s. 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:

    0123456789abcdef

    These are the characters '\u0030' through '\u0039' and '\u0061' through '\u0066'. If uppercase letters are desired, the toUpperCase method may be called on the result.

    returns

    the string representation of the unsigned integer value represented by this NonZeroInt's underlying Int in hexadecimal (base 16).

  98. def toInt: Int

    Converts this NonZeroInt to an Int.

  99. def toLong: Long

    Converts this NonZeroInt to a Long.

  100. def toOctalString: String

    Returns a string representation of this NonZeroInt's underlying Int as an unsigned integer in base 8.

    Returns a string representation of this NonZeroInt's underlying Int as an unsigned integer in base 8.

    The unsigned integer value is this NonZeroInt's underlying Int plus 232 if the underlying Int is negative; otherwise, it is equal to the underlying Int. This value is converted to a string of ASCII digits in octal (base 8) with no extra leading 0s.

    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:

    01234567

    These are the characters '\u0030' through '\u0037'.

    returns

    the string representation of the unsigned integer value represented by this NonZeroInt's underlying Int in octal (base 8).

  101. def toShort: Short

    Converts this NonZeroInt to a Short.

  102. def toString(): String

    A string representation of this NonZeroInt.

    A string representation of this NonZeroInt.

    Definition Classes
    NonZeroInt → Any
  103. def unary_+: NonZeroInt

    Returns this value, unmodified.

  104. def unary_-: NonZeroInt

    Returns the negation of this value.

  105. def unary_~: Int

    Returns the bitwise negation of this value.

    Returns the bitwise negation of this value.

    Example:
    1. ~5 == -6
      // in binary: ~00000101 ==
      // 11111010
  106. def until(end: Int, step: Int): Range

    Create a Range from this NonZeroInt value until the specified end (exclusive) with the specified step value.

    Create a Range from this NonZeroInt value until the specified end (exclusive) with the specified step value.

    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 this up to but not including end.

  107. def until(end: Int): Range

    Create a Range from this NonZeroInt value until the specified end (exclusive) with step value 1.

    Create a Range from this NonZeroInt value until the specified end (exclusive) with step value 1.

    end

    The final bound of the range to make.

    returns

    A scala.collection.immutable.Range from this up to but not including end.

  108. val value: Int
  109. def |(x: Long): Long

    Returns the bitwise OR of this value and x.

    Returns the bitwise OR of this value and x.

    Example:
    1. (0xf0 | 0xaa) == 0xfa
      // in binary: 11110000
      // | 10101010
      // --------
      // 11111010
  110. def |(x: Int): Int

    Returns the bitwise OR of this value and x.

    Returns the bitwise OR of this value and x.

    Example:
    1. (0xf0 | 0xaa) == 0xfa
      // in binary: 11110000
      // | 10101010
      // --------
      // 11111010
  111. def |(x: Char): Int

    Returns the bitwise OR of this value and x.

    Returns the bitwise OR of this value and x.

    Example:
    1. (0xf0 | 0xaa) == 0xfa
      // in binary: 11110000
      // | 10101010
      // --------
      // 11111010
  112. def |(x: Short): Int

    Returns the bitwise OR of this value and x.

    Returns the bitwise OR of this value and x.

    Example:
    1. (0xf0 | 0xaa) == 0xfa
      // in binary: 11110000
      // | 10101010
      // --------
      // 11111010
  113. def |(x: Byte): Int

    Returns the bitwise OR of this value and x.

    Returns the bitwise OR of this value and x.

    Example:
    1. (0xf0 | 0xaa) == 0xfa
      // in binary: 11110000
      // | 10101010
      // --------
      // 11111010

Inherited from AnyVal

Inherited from Any

Ungrouped