| Extracted from Pike v7.8 release 866 at 2016-04-05.

[Top]

# 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 ``/(`/(<font face='courier'>arg1` , <font face='courier'>arg2 ), @<font face='courier'>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 `<font face='courier'>arg1` / <font face='courier'>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

  `%