Array typedesc len (#6032)
This commit is contained in:
parent
ae7fe5087f
commit
ea47234b35
2 changed files with 19 additions and 1 deletions
|
|
@ -718,7 +718,7 @@ proc len*[TOpenArray: openArray|varargs](x: TOpenArray): int {.
|
||||||
magic: "LengthOpenArray", noSideEffect.}
|
magic: "LengthOpenArray", noSideEffect.}
|
||||||
proc len*(x: string): int {.magic: "LengthStr", noSideEffect.}
|
proc len*(x: string): int {.magic: "LengthStr", noSideEffect.}
|
||||||
proc len*(x: cstring): int {.magic: "LengthStr", noSideEffect.}
|
proc len*(x: cstring): int {.magic: "LengthStr", noSideEffect.}
|
||||||
proc len*[I, T](x: array[I, T]): int {.magic: "LengthArray", noSideEffect.}
|
proc len*(x: (type array)|array): int {.magic: "LengthArray", noSideEffect.}
|
||||||
proc len*[T](x: seq[T]): int {.magic: "LengthSeq", noSideEffect.}
|
proc len*[T](x: seq[T]): int {.magic: "LengthSeq", noSideEffect.}
|
||||||
## returns the length of an array, an openarray, a sequence or a string.
|
## returns the length of an array, an openarray, a sequence or a string.
|
||||||
## This is roughly the same as ``high(T)-low(T)+1``, but its resulting type is
|
## This is roughly the same as ``high(T)-low(T)+1``, but its resulting type is
|
||||||
|
|
|
||||||
18
tests/array/tarraylen.nim
Normal file
18
tests/array/tarraylen.nim
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
discard """
|
||||||
|
output: ""
|
||||||
|
"""
|
||||||
|
var a: array[0, int]
|
||||||
|
doAssert a.len == 0
|
||||||
|
doAssert array[0..0, int].len == 1
|
||||||
|
doAssert array[0..0, int]([1]).len == 1
|
||||||
|
doAssert array[1..1, int].len == 1
|
||||||
|
doAssert array[1..1, int]([1]).len == 1
|
||||||
|
doAssert array[2, int].len == 2
|
||||||
|
doAssert array[2, int]([1, 2]).len == 2
|
||||||
|
doAssert array[1..3, int].len == 3
|
||||||
|
doAssert array[1..3, int]([1, 2, 3]).len == 3
|
||||||
|
doAssert array[0..2, int].len == 3
|
||||||
|
doAssert array[0..2, int]([1, 2, 3]).len == 3
|
||||||
|
doAssert array[-2 .. -2, int].len == 1
|
||||||
|
doAssert([1, 2, 3].len == 3)
|
||||||
|
doAssert([42].len == 1)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue