mirror of
https://github.com/nim-lang/Nim.git
synced 2026-05-03 20:44:46 +00:00
produce runtime type information for reified openArrays (#15415)
* produce runtime type information for reified openArrays * added a test case
This commit is contained in:
42
tests/views/tsplit_into_seq.nim
Normal file
42
tests/views/tsplit_into_seq.nim
Normal file
@@ -0,0 +1,42 @@
|
||||
discard """
|
||||
output: '''asdf
|
||||
asdf
|
||||
231
|
||||
231
|
||||
'''
|
||||
cmd: "nim c $file"
|
||||
"""
|
||||
|
||||
{.experimental: "views".}
|
||||
|
||||
const
|
||||
Whitespace = {' ', '\t', '\n', '\r'}
|
||||
|
||||
proc split*(s: string, seps: set[char] = Whitespace,
|
||||
maxsplit: int = -1): seq[openArray[char]] =
|
||||
var last = 0
|
||||
var splits = maxsplit
|
||||
result = @[]
|
||||
|
||||
while last <= len(s):
|
||||
var first = last
|
||||
while last < len(s) and s[last] notin seps:
|
||||
inc(last)
|
||||
if splits == 0: last = len(s)
|
||||
{.noSideEffect.}:
|
||||
result.add toOpenArray(s, first, last-1)
|
||||
result.add toOpenArray(s, first, last-1)
|
||||
if splits == 0: break
|
||||
dec(splits)
|
||||
inc(last)
|
||||
|
||||
proc `$`(x: openArray[char]): string =
|
||||
result = newString(x.len)
|
||||
for i in 0..<x.len: result[i] = x[i]
|
||||
|
||||
proc main() =
|
||||
let words = split("asdf 231")
|
||||
for x in words:
|
||||
echo x
|
||||
|
||||
main()
|
||||
Reference in New Issue
Block a user