> For the complete documentation index, see [llms.txt](https://trizen.gitbook.io/sidef-lang/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://trizen.gitbook.io/sidef-lang/programming_tasks/g/generic_swap.md).

# Generic swap

```ruby
func swap(Ref a, Ref b) {
    var tmp = *a
    *a = *b
    *b = tmp
}
```

or:

```ruby
func swap(Ref a, Ref b) {
    (*a, *b) = (*b, *a)
}
```

or:

```ruby
func swap(Ref a, Ref b) {
    [*a, *b] » (b, a)
}
```

The swap functions must be called with variable references.

```ruby
var (x, y) = (1, 2)
swap(\x, \y)
```
