# Ruby Splat operator
Topics: [[Ruby]]
The splat operator `*<operand>` in Ruby does two things. It either deconstructs an array into its separate elements, or it does the opposite.
## Use case: class method call, instance method implementation
The mirrored effect of the splat operator lets us build a nice shorthand that allows us to call a class method but implement the business logic as instance methods, which prevents side effects due to the object's limited lifetime.
With the splat trick, we can simply call `Foo.perform(...)` instead of `Foo.new(...).perform`.
```ruby
def self.perform(*args)
new(*args).perform
end
```
Here, the `perform` class method collects all its arguments in a single variable, instantiates an object of itself, and finally calls the object's `perform` method with the list of arguments, expanded from the variable again.
---
## Related
- Thoughtbot: [Ruby Splat Operator 🌟](https://thoughtbot.com/blog/ruby-splat-operator)