module ReverseString
def self.reverse(input : String) : String
String.build(input.size) do |builder|
(0...input.size).reverse_each do |i|
builder << input[i]
end
end
end
end
The method takes a String
as an argument and returns a String
.
The constructor, String.build
, takes the size of the string as an argument.
The String.build
method is from the String::Builder
class.
The String::Builder
allows writing to a buffer in memory.
The constructor is given the size of the string to be reversed. This is due to the fact that we already know the size of the string. This is more efficient than using the default size of 16 and then resizing the string later.
A Range
is created from 0
to the size of the string (exclusive).
The reverse_each
method iterates over the range in reverse order.
So the last index of the string is the first value given to the block.
For each index, the character at that index is appended to the string builder.
The String.build
method is what is implicitly returned from the method.