Scalactic is brought to you by:

final class NumericChar extends AnyVal

An AnyVal for numeric Chars.

Note: a NumericChar has a value between '0' and '9'.

Because NumericChar is an AnyVal it will usually be as efficient as a Char, being boxed only when a Char would have been boxed.

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

scala> import anyvals._
import anyvals._

scala> NumericChar('4')
res0: org.scalactic.anyvals.NumericChar = NumericChar('4')

scala> NumericChar('a')
<console>:14: error: NumericChar.apply can only be invoked on Char literals that are numeric, like NumericChar('4').
              NumericChar('a')
                         ^

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

scala> val x = '1'
x: Char = 1

scala> NumericChar(x)
<console>:15: error: NumericChar.apply can only be invoked on Char literals that are numeric, like NumericChar('4'). Please use NumericChar.from instead.
              NumericChar(x)
                         ^

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

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

scala> val y = 'a'
y: Char = a

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

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

scala> def invert(ch: NumericChar): Char = ('9' - ch + '0').toChar
invert: (ch: org.scalactic.anyvals.NumericChar)Char

scala> invert('1')
res6: Char = 8

scala> scala> invert('9')
res7: Char = 0

scala> invert('a')
<console>:12: error: NumericChar.apply can only be invoked on Char literals that are numeric, like NumericChar('4').
              invert('a')
                     ^

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

Value Members

  1. def %(x: Double): Double

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

  2. def %(x: Float): Float

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

  3. def %(x: Long): Long

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

  4. def %(x: Int): Int

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

  5. def %(x: Char): Int

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

  6. def %(x: Short): Int

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

  7. def %(x: Byte): Int

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

  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. def *(x: Double): Double

    Returns the product of this value and x.

  14. def *(x: Float): Float

    Returns the product of this value and x.

  15. def *(x: Long): Long

    Returns the product of this value and x.

  16. def *(x: Int): Int

    Returns the product of this value and x.

  17. def *(x: Char): Int

    Returns the product of this value and x.

  18. def *(x: Short): Int

    Returns the product of this value and x.

  19. def *(x: Byte): Int

    Returns the product of this value and x.

  20. def +(x: Double): Double

    Returns the sum of this value and x.

  21. def +(x: Float): Float

    Returns the sum of this value and x.

  22. def +(x: Long): Long

    Returns the sum of this value and x.

  23. def +(x: Int): Int

    Returns the sum of this value and x.

  24. def +(x: Char): Int

    Returns the sum of this value and x.

  25. def +(x: Short): Int

    Returns the sum of this value and x.

  26. def +(x: Byte): Int

    Returns the sum of this value and x.

  27. def +(x: String): String

    Prepends this NumericChar's value to a string.

  28. def -(x: Double): Double

    Returns the difference of this value and x.

  29. def -(x: Float): Float

    Returns the difference of this value and x.

  30. def -(x: Long): Long

    Returns the difference of this value and x.

  31. def -(x: Int): Int

    Returns the difference of this value and x.

  32. def -(x: Char): Int

    Returns the difference of this value and x.

  33. def -(x: Short): Int

    Returns the difference of this value and x.

  34. def -(x: Byte): Int

    Returns the difference of this value and x.

  35. def /(x: Double): Double

    Returns the quotient of this value and x.

  36. def /(x: Float): Float

    Returns the quotient of this value and x.

  37. def /(x: Long): Long

    Returns the quotient of this value and x.

  38. def /(x: Int): Int

    Returns the quotient of this value and x.

  39. def /(x: Char): Int

    Returns the quotient of this value and x.

  40. def /(x: Short): Int

    Returns the quotient of this value and x.

  41. def /(x: Byte): Int

    Returns the quotient of this value and x.

  42. def <(x: Double): Boolean

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

  43. def <(x: Float): Boolean

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

  44. def <(x: Long): Boolean

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

  45. def <(x: Int): Boolean

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

  46. def <(x: Char): Boolean

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

  47. def <(x: Short): Boolean

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

  48. def <(x: Byte): Boolean

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

  49. 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
  50. 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
  51. def <=(x: Double): Boolean

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

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

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

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

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

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

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

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

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

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

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

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

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

  58. def >(x: Double): Boolean

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

  59. def >(x: Float): Boolean

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

  60. def >(x: Long): Boolean

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

  61. def >(x: Int): Boolean

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

  62. def >(x: Char): Boolean

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

  63. def >(x: Short): Boolean

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

  64. def >(x: Byte): Boolean

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  72. 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
  73. 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
  74. 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
  75. 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
  76. 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
  77. 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
  78. 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
  79. 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
  80. 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
  81. def asDigit: Int
  82. def asDigitPosZInt: PosZInt
  83. def getClass(): Class[_ <: AnyVal]
    Definition Classes
    AnyVal → Any
  84. def max(that: NumericChar): NumericChar
  85. def min(that: NumericChar): NumericChar
  86. def toByte: Byte

    Converts this NumericChar to a Byte.

  87. def toChar: Char

    Converts this NumericChar to a Char.

  88. def toDouble: Double

    Converts this NumericChar to a Double.

  89. def toFloat: Float

    Converts this NumericChar to a Float.

  90. def toInt: Int

    Converts this NumericChar to an Int.

  91. def toLong: Long

    Converts this NumericChar to a Long.

  92. def toShort: Short

    Converts this NumericChar to a Short.

  93. def toString(): String

    A string representation of this NumericChar.

    A string representation of this NumericChar.

    Definition Classes
    NumericChar → Any
  94. def unary_+: NumericChar

    Returns this value, unmodified.

  95. def unary_-: NegZInt

    Returns the negation of this value.

  96. 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
  97. val value: Char
  98. 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
  99. 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
  100. 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
  101. 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
  102. 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