DEV Community

chenge
chenge

Posted on

Keyword Arguments of Ruby makes code more clear

In this video the speaker demoed the pros of KWArgs.

In the pic, upper code is obviously more clear.

So when should you use it? I think, when it's hard to identify the params you should use KWArgs.

The usage is simple:

def foo(bar:, baz:)
end


foo(bar: 1, baz: 2)

Do you think so?

Oldest comments (6)

Collapse
 
burdettelamar profile image
Burdette Lamar

Seems right as shown, but perhaps only for .new?

For any other method:

  • If the parameters are related, could they form a class and be passed as an object?

  • If not, does the method lack a unified purpose?

Collapse
 
chenge profile image
chenge

Right, better params no more than 3. If more than 3 maybe should use hash or object.

Collapse
 
edisonywh profile image
Edison Yap • Edited

Didn't watch the video, but what I find interesting is that keyword arguments did not exist until Ruby 2.0, which means before Ruby 2.0, there's a totally different way to do hack it, and you'll sometimes see this in the wild :) (I've encountered this in Rails' DateTime library)


# Ruby 2.0
def method(first:, second:)
  puts "First: #{first}, Second: #{second}"
end

# Ruby 1.9
def method(options={})
  first = options.fetch(:first)
  second = options.fetch(:second)
  puts "First: #{first}, Second: #{second}"
end

robots.thoughtbot.com/ruby-2-keywo...

Collapse
 
chenge profile image
chenge

Yes, it simplify code. Very useful.

Collapse
 
jcsvveiga profile image
João Veiga

How does it handle extra arguments? Does it ignore it or throw an exception?

Collapse
 
chenge profile image
chenge

ArgumentError