Actions
Feature #16364
closedTop-level ruby2_keywords
Status:
Closed
Assignee:
-
Target version:
-
Description
How about defining top-level ruby2_keywords?
#!/usr/bin/env ruby
def foo(**kw)
kw
end
ruby2_keywords def bar(*a)
foo(*a)
end
bar(k:1) #=> {:k=>1} with no warnings in 2.7
Currently, Module#ruby2_keywords
is defined only in Module
class. So, to mark a top-level method as ruby2_keywords
, we need to workaround by surrounding the definition with class Object; ruby2_keywords ...; end
. It is a bit annoying.
I know that practical applications tend to define no top-level methods. However, I think of two reasons that we want top-level ruby2_keywords
:
- To learn
ruby2_keywords
, we tend to write a minimal script without class definition. Actually, I saw some people (even a committer) confused due to lack of top-levelruby2_keywords
when they are learningruby2_keywords
. - We write small applications that consist of only one script file, e.g., Slack notification script, a simple AWS Lambda, a CGI script for webhooks, etc. I believe top-level methods are actually used in such a script.
So, I think the top-level ruby2_keywords
is good to have in 2.7.
Files
Actions
Like0
Like0Like0Like0Like0