See Original text in context
method succ(IO::Path: --> IO::Path)
Returns a new IO::Path constructed from the invocant, with basename
changed by calling Str.succ
on it.
"foo/file02.txt".IO.succ.say; # OUTPUT: «"foo/file03.txt".IO»
See Original text in context
method succ(::?CLASS:)
say Oðin.succ; # OUTPUT: «Freija»
See Original text in context
method succ(Date: --> Date)
Returns a Date
of the following day. "succ" is short for "successor".
say Date.new("2016-02-28").succ; # OUTPUT: «2016-02-29»
See Original text in context
method succ(--> Bool)
Returns True
.
say True.succ; # OUTPUT: «True»say False.succ; # OUTPUT: «True»
succ
is short for "successor"; it returns the next enum value. Bool is a special enum with only two values, False
and True
. When sorted, False
comes first, so True
is its successor. And since True
is the "highest" Bool enum value, its own successor is also True
.
See Original text in context
method succ(Numeric:)
Returns the number incremented by one (successor).
See Original text in context
method succ(Allomorph:)
Calls Numeric.succ
on the invocant's numeric value.
See Original text in context
method succ(Str: --> Str)
Returns the string incremented by one.
String increment is "magical". It searches for the last alphanumeric sequence that is not preceded by a dot, and increments it.
'12.34'.succ; # OUTPUT: «13.34»'img001.png'.succ; # OUTPUT: «img002.png»
The actual increment step works by mapping the last alphanumeric character to a character range it belongs to, and choosing the next character in that range, carrying to the previous letter on overflow.
'aa'.succ; # OUTPUT: «ab»'az'.succ; # OUTPUT: «ba»'109'.succ; # OUTPUT: «110»'α'.succ; # OUTPUT: «β»'a9'.succ; # OUTPUT: «b0»
String increment is Unicode-aware, and generally works for scripts where a character can be uniquely classified as belonging to one range of characters.