# Method `/()

Method `/

  ``mixed` `/(`object` `arg1`, `mixed` `arg2`)`
  ``mixed` `/(`mixed` `arg1`, `object` `arg2`)`
  ``array`(`string`) `/(`string` `arg1`, `int` `arg2`)`
  ``array`(`string`) `/(`string` `arg1`, `float` `arg2`)`
  ``array`(`array`) `/(`array` `arg1`, `int` `arg2`)`
  ``array`(`array`) `/(`array` `arg1`, `float` `arg2`)`
  ``array`(`string`) `/(`string` `arg1`, `string` `arg2`)`
  ``array`(`array`) `/(`array` `arg1`, `array` `arg2`)`
  ``float` `/(`float` `arg1`, `int`|`float` `arg2`)`
  ``float` `/(`int` `arg1`, `float` `arg2`)`
  ``int` `/(`int` `arg1`, `int` `arg2`)`
  ``mixed` `/(`mixed` `arg1`, `mixed` `arg2`, `mixed` ... `extras`)`

Description

  Division/split.

  Every expression with the `/` operator becomes a call to this function, i.e. `a/b` is the same as `predef::`/(a,b)`.

Returns

  If there are more than two arguments, the result will be ``/(`/(<code class='reference paramref'>arg1`, <code class='reference paramref'>arg2), @<code class='reference paramref'>extras).

  If `arg1` is an object that implements lfun::`/(), that function will be called with `arg2` as the single argument.

  If `arg2` is an object that implements lfun::``/(), that function will be called with `arg1` as the single argument.

  Otherwise the result will be as follows:

  `arg1` can have any of the following types:

  ``string``

  `arg2` can have any of the following types:

  ``int`|`float`` | The result will be and array of `arg1` split in segments of length `arg2`. If `arg2` is negative the splitting will start from the end of `arg1`.
  ``string`` | The result will be an array of `arg1` split at each occurrence of `arg2`. Note that the segments that matched against `arg2` will not be in the result.

  ``array``

  `arg2` can have any of the following types:

  ``int`|`float`` | The result will be and array of `arg1` split in segments of length `arg2`. If `arg2` is negative the splitting will start from the end of `arg1`.
  ``array`` | The result will be an array of `arg1` split at each occurrence of `arg2`. Note that the elements that matched against `arg2` will not be in the result.

  ``float`|`int`` | The result will be `<code class='reference paramref'>arg1` / <code class='reference paramref'>arg2. If both arguments are int, the result will be truncated to an int. Otherwise the result will be a float.

Note

  Unlike in some languages, the function f(x) = x/n (x and n integers) behaves in a well-defined way and is always rounded down. When you increase x, f(x) will increase with one for each n:th increment. For all x, (x + n) / n = x/n + 1; crossing zero is not special. This also means that / and % are compatible, so that a = b*(a/b) + a%b for all a and b.

See also

  `%