final class PosInt extends AnyVal
An AnyVal
for positive Int
s.
Note: a PosInt
may not equal 0. If you want positive
number or 0, use PosZInt.
Because PosInt
is an AnyVal
it will usually be
as efficient as an Int
, being boxed only when an Int
would have been boxed.
The PosInt.apply
factory method is implemented in terms of a macro that
checks literals for validity at compile time. Calling PosInt.apply
with
a literal Int
value will either produce a valid PosInt
instance
at run time or an error at compile time. Here's an example:
scala> import anyvals._ import anyvals._ scala> PosInt(1) res0: org.scalactic.anyvals.PosInt = PosInt(1) scala> PosInt(0) <console>:14: error: PosInt.apply can only be invoked on a positive (i > 0) integer literal, like PosInt(42). PosInt(0) ^
PosInt.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 PosInt.apply
, you'll get a compiler error that suggests you use a different factor method,
PosInt.from
, instead:
scala> val x = 1 x: Int = 1 scala> PosInt(x) <console>:15: error: PosInt.apply can only be invoked on an integer literal, like PosInt(42). Please use PosInt.from instead. PosInt(x) ^
The PosInt.from
factory method will inspect the value at runtime and return an Option[PosInt]
. If
the value is valid, PosInt.from
will return a Some[PosInt]
, else it will return a None
.
Here's an example:
scala> PosInt.from(x) res3: Option[org.scalactic.anyvals.PosInt] = Some(PosInt(1)) scala> val y = 0 y: Int = 0 scala> PosInt.from(y) res4: Option[org.scalactic.anyvals.PosInt] = None
The PosInt.apply
factory method is marked implicit, so that you can pass literal Int
s
into methods that require PosInt
, and get the same compile-time checking you get when calling
PosInt.apply
explicitly. Here's an example:
scala> def invert(pos: PosInt): Int = Int.MaxValue - pos invert: (pos: org.scalactic.anyvals.PosInt)Int scala> invert(1) res0: Int = 2147483646 scala> invert(Int.MaxValue) res1: Int = 0 scala> invert(0) <console>:15: error: PosInt.apply can only be invoked on a positive (i > 0) integer literal, like PosInt(42). invert(0) ^ scala> invert(-1) <console>:15: error: PosInt.apply can only be invoked on a positive (i > 0) integer literal, like PosInt(42). invert(-1) ^
This example also demonstrates that the PosInt
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 PosInt
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 PosInt
(the type of pos
),
you can still subtract pos
, because the PosInt
will be implicitly widened to Int
.
- Source
- PosInt.scala
- Alphabetic
- By Inheritance
- PosInt
- AnyVal
- Any
- Hide All
- Show All
- Public
- All
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
PosInt
'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
true
if this value is less than x,false
otherwise. -
def
<(x: Float): Boolean
Returns
true
if this value is less than x,false
otherwise. -
def
<(x: Long): Boolean
Returns
true
if this value is less than x,false
otherwise. -
def
<(x: Int): Boolean
Returns
true
if this value is less than x,false
otherwise. -
def
<(x: Char): Boolean
Returns
true
if this value is less than x,false
otherwise. -
def
<(x: Short): Boolean
Returns
true
if this value is less than x,false
otherwise. -
def
<(x: Byte): Boolean
Returns
true
if this value is less than x,false
otherwise. -
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
true
if this value is less than or equal to x,false
otherwise. -
def
<=(x: Float): Boolean
Returns
true
if this value is less than or equal to x,false
otherwise. -
def
<=(x: Long): Boolean
Returns
true
if this value is less than or equal to x,false
otherwise. -
def
<=(x: Int): Boolean
Returns
true
if this value is less than or equal to x,false
otherwise. -
def
<=(x: Char): Boolean
Returns
true
if this value is less than or equal to x,false
otherwise. -
def
<=(x: Short): Boolean
Returns
true
if this value is less than or equal to x,false
otherwise. -
def
<=(x: Byte): Boolean
Returns
true
if this value is less than or equal to x,false
otherwise. -
final
def
==(arg0: Any): Boolean
- Definition Classes
- Any
-
def
>(x: Double): Boolean
Returns
true
if this value is greater than x,false
otherwise. -
def
>(x: Float): Boolean
Returns
true
if this value is greater than x,false
otherwise. -
def
>(x: Long): Boolean
Returns
true
if this value is greater than x,false
otherwise. -
def
>(x: Int): Boolean
Returns
true
if this value is greater than x,false
otherwise. -
def
>(x: Char): Boolean
Returns
true
if this value is greater than x,false
otherwise. -
def
>(x: Short): Boolean
Returns
true
if this value is greater than x,false
otherwise. -
def
>(x: Byte): Boolean
Returns
true
if this value is greater than x,false
otherwise. -
def
>=(x: Double): Boolean
Returns
true
if this value is greater than or equal to x,false
otherwise. -
def
>=(x: Float): Boolean
Returns
true
if this value is greater than or equal to x,false
otherwise. -
def
>=(x: Long): Boolean
Returns
true
if this value is greater than or equal to x,false
otherwise. -
def
>=(x: Int): Boolean
Returns
true
if this value is greater than or equal to x,false
otherwise. -
def
>=(x: Char): Boolean
Returns
true
if this value is greater than or equal to x,false
otherwise. -
def
>=(x: Short): Boolean
Returns
true
if this value is greater than or equal to x,false
otherwise. -
def
>=(x: Byte): Boolean
Returns
true
if this value is greater than or equal to x,false
otherwise. -
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
getClass(): Class[_ <: AnyVal]
- Definition Classes
- AnyVal → Any
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
max(that: PosInt): PosInt
Returns
this
ifthis > that
orthat
otherwise. -
def
min(that: PosInt): PosInt
Returns
this
ifthis < that
orthat
otherwise. -
def
to(end: Int, step: Int): Inclusive
Create an inclusive
Range
from thisPosInt
value to the specifiedend
with the specifiedstep
value.Create an inclusive
Range
from thisPosInt
value to the specifiedend
with the specifiedstep
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 includingend
.
-
def
to(end: Int): Inclusive
Create an inclusive
Range
from thisPosInt
value to the specifiedend
with step value 1.Create an inclusive
Range
from thisPosInt
value to the specifiedend
with step value 1.- end
The final bound of the range to make.
- returns
A scala.collection.immutable.Range from
this
up to and includingend
.
-
def
toBinaryString: String
Returns a string representation of this
PosInt
's underlyingInt
as an unsigned integer in base 2.Returns a string representation of this
PosInt
's underlyingInt
as an unsigned integer in base 2.The unsigned integer value is the argument plus 232 if this
PosInt
's underlyingInt
is 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 leading0
s. 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
PosInt
's underlyingInt
in binary (base 2).
-
def
toByte: Byte
Converts this
PosInt
to aByte
. -
def
toChar: Char
Converts this
PosInt
to aChar
. -
def
toDouble: Double
Converts this
PosInt
to aDouble
. -
def
toFloat: Float
Converts this
PosInt
to aFloat
. -
def
toHexString: String
Returns a string representation of this
PosInt
's underlyingInt
as an unsigned integer in base 16.Returns a string representation of this
PosInt
's underlyingInt
as an unsigned integer in base 16.The unsigned integer value is the argument plus 232 if this
PosInt
's underlyingInt
is negative; otherwise, it is equal to the thisPosInt
's underlyingInt
This value is converted to a string of ASCII digits in hexadecimal (base 16) with no extra leading0
s. 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, thetoUpperCase
method may be called on the result.- returns
the string representation of the unsigned integer value represented by this
PosInt
's underlyingInt
in hexadecimal (base 16).
-
def
toInt: Int
Converts this
PosInt
to anInt
. -
def
toLong: Long
Converts this
PosInt
to aLong
. -
def
toOctalString: String
Returns a string representation of this
PosInt
's underlyingInt
as an unsigned integer in base 8.Returns a string representation of this
PosInt
's underlyingInt
as an unsigned integer in base 8.The unsigned integer value is this
PosInt
's underlyingInt
plus 232 if the underlyingInt
is 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 leading0
s.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
PosInt
's underlyingInt
in octal (base 8).
-
def
toShort: Short
Converts this
PosInt
to aShort
. -
def
toString(): String
A string representation of this
PosInt
.A string representation of this
PosInt
.- Definition Classes
- PosInt → Any
-
def
unary_+: PosInt
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
Range
from thisPosInt
value until the specifiedend
(exclusive) with the specifiedstep
value.Create a
Range
from thisPosInt
value until the specifiedend
(exclusive) with the specifiedstep
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 includingend
.
-
def
until(end: Int): Range
Create a
Range
from thisPosInt
value until the specifiedend
(exclusive) with step value 1.Create a
Range
from thisPosInt
value until the specifiedend
(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 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: