From: matheusrichardt@... Date: 2021-06-18T02:36:40+00:00 Subject: [ruby-core:104356] [Ruby master Feature#17938] Keyword alternative for boolean positional arguments Issue #17938 has been updated by matheusrich (Matheus Richard). Another alternative would be allowing setting positional args through keyword args: ``` ruby def respond_to?(symbol, include_all = false) # as is today # ... end obj = Object.new obj.respond_to?(:some_method, include_all: true) # it allows setting via keyword arg if names match ``` This would be a very different approach (and a lot of work) which I'm not sure Matz wants to follow. On the other hand, this would basically remove the difference between positional and keyword args (and is [how Crystal handles them](https://crystal-lang.org/reference/syntax_and_semantics/default_and_named_arguments.html#named-arguments)). ---------------------------------------- Feature #17938: Keyword alternative for boolean positional arguments https://bugs.ruby-lang.org/issues/17938#change-92585 * Author: matheusrich (Matheus Richard) * Status: Open * Priority: Normal ---------------------------------------- Some Ruby methods accept optional boolean arguments. This kind of parameter is known to be confusing since you cannot tell just looking at the method call what the parameter mean. For example: ```ruby object.respond_to?(:symbol, false) # what does `false` mean? object.methods(true) # what does `true` mean? ``` Now compare that to ```ruby object.respond_to?(:symbol, include_all: false) object.methods(regular: true) # or object.methods(only_public: true) # or object.methods(include_all: false) ``` I know Matz doesn't like breaking changes, so maybe we could have both to not break current calls, but allow a nicer syntax in newer Ruby? I don't know the depths of the Ruby C implementation, so here's what I thought in plain Ruby: ```ruby def respond_to?(symbol, include_all_positional=false, include_all: nil) include_all ||= include_all_positional # ... end ``` I'm willing to tackle this, if approved. ---Files-------------------------------- Screenshot from 2021-06-06 11-37-44.png (5.63 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: