# Method `~()

Method `~

  ``mixed` `~(`object` `arg`)`
  ``int` `~(`int` `arg`)`
  ``float` `~(`float` `arg`)`
  ``type` `~(`type`|`program` `arg`)`
  ``string` `~(`string` `arg`)`

Description

  Complement/inversion.

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

Returns

  The result will be as follows:

  `arg` can have any of the following types:

  ``object`` | If `arg` implements lfun::`~(), that function will be called.
  ``int`` | The bitwise inverse of `arg` will be returned.
  ``float`` | The result will be `-1.0 - <code class='reference paramref'>arg`.
  ``type`|`program`` | The type inverse of `arg` will be returned.
  ``string`` | If `arg` only contains characters in the range 0 - 255 (8-bit), a string containing the corresponding 8-bit inverses will be returned.

See also

  `!(), lfun::`~()