.() is a syntatic sugar for
class Person def call "Hello World" end end Person.new.() #=> Hello World
In this example, we declare a
Person class and
call method in the class. With this, we can later execute
Person.new.() to call the
Note that, we need to initialize the
Person object first by calling
new, since the
call is a instance method.
If we wanted to just call by
Person.(), we can do it this way:
class Person def self.call "Hello World" end end Person.() #=> "Hello World"
Some programming languages such as Python, Swift and Scala initalize object by
Person(). In Ruby, we can’t override the
() operator to achieve the same effect (see this StackOverflow question). However, we can use
.() to achieve a similar result:
class Person def initialize(name, age) @name = name @age = age end def self.call(name:, age:) self.new(name, age) end end Person.(name: "Peter", age: 12) #=> #<Person:0x00007f991b80b8d8 @name="Peter", @age=12>
Another way is to use metaprogramming in Ruby. Take a look at this StackOverflow answer to find out how.