## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# Slices

The slice operator can be applied IDC objects are strings.

For strings, the slice operator denotes a substring:

      str[i1:i2] - substring from i1 to i2. i2 is excluded
      str[idx]   - one character substring at 'idx'.
                   this is equivalent to str[idx:idx+1]
      str[:idx]  - substring from the beginning of the string to idx
                   this is equivalent to str[0:idx]
      str[idx:]  - substring from idx to the end of the string
                   this is equivalent to str[idx:0x7fffffff]

Any indexes that are out of bounds are silently adjusted to correct values. If i1 >= i2, empty string is returned. Negative indexes are used to denote positions counting from the end of the string.

String slices can be used on the right side of an assignment. For example:

      str[0:2] = "abc";

will replace 2 characters at the beginning of the string by “abc”.

For objects, the slice operator denotes a subset of attributes. It can be used to emulate arrays:

      auto x = object();
      x[0] = value1;
      x[1] = "value2";

x[i1:i2] denotes all attributes with numeric values between i1 and i2 (i2 is excluded).

Any non-numeric attributes are ignored by the slice operator.