Issue #17938 has been updated by matheusrich (Matheus Richard).


> This applies for any argument really. No other way than to read the docs (or know from a previous reading) to answer that precisely.

I get what you're saying, but I don't think it's a fair comparison. In the following example I think it's quite intuitive what the arguments mean:

```ruby
"some,string".split(",")
["some", "string"].join(" ")
```

I think the problem is with boolean positional args, which add very few context for the reader. A boolean flag could be anything. IIRC, Rubocop even have a rule regarding this.

I agree that we have to pick a consistent name for this argument too! I'd love to hear suggestions. 

----------------------------------------
Feature #17938: Keyword alternative for boolean positional arguments
https://bugs.ruby-lang.org/issues/17938#change-92374

* 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: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>