Add some more about ranges

This commit is contained in:
chr v1.x 2019-07-16 18:04:35 -07:00
parent 4b6b8f6069
commit 6b75246207
1 changed files with 28 additions and 1 deletions

View File

@ -133,7 +133,33 @@ So, when using inheritance, be sure to inherit using refs, unless you know what
### Ranges
The syntax for ranges is different. a[x:y] becomes a[x..<y]
In Python, simple integer for loops use the `range` generator function. For the 1- and 2- argument forms of this function, nim's [`..` iterator](https://nim-lang.org/docs/system.html#...i%2CT%2CT) works almost the same way:
``` Nim
for i in ..10:
echo i # Prints 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
for i in 5..10:
echo i # Prints 5, 6, 7, 8, 9, 10
```
Note that the `..` operator includes the end of the range, whereas Python's `range(a, b)` does not include `b`. If you prefer this behavior, use the [`..<` iterator](https://nim-lang.org/docs/system.html#..%3C.i%2CT%2CT) instead:
``` Nim
for i in ..<10:
echo i # Prints 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
```
Python's `range()` also has an optional third parameter, which is the value to increment by each step, which can be positive or negative. If you need this behavior, use the [`countup`](https://nim-lang.org/docs/system.html#countup.i%2CT%2CT%2CPositive) or [`countdown`](https://nim-lang.org/docs/system.html#countdown.i%2CT%2CT%2CPositive) iterators:
``` Nim
for i in countup(1, 10, 2):
echo i # Prints 1, 3, 5, 7, 9
```
### Python slices
The syntax for slice ranges is different. a[x:y] becomes a[x..<y].
Also, a[x..y] is inclusive.
``` Nim
let a = @[1,2,3,4]
@ -143,6 +169,7 @@ a[0..<2] # returns @[1, 2]
a[0..3] # returns @[1, 2, 3, 4]
```
### Python strings
Use double quotes: "foo" or """foo""", not 'foo'