Project

General

Profile

Feature #17290

Syntax sugar for boolean keyword argument

Added by sawa (Tsuyoshi Sawada) about 1 month ago. Updated about 1 month ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:100630]

Description

We frequently use keyword arguments just to pass true value out of the truthy/falsy options given. And in many such cases, the falsy option is set as the default, and only the truthy value is ever passed explicitly. I propose to have a syntax sugar to omit the value of a keyword argument. When omitted, it should be interpreted with value true.

gets(chomp:)
CSV.parse(" foo var ", strip:)

should be equivalent to

gets(chomp: true)
CSV.parse(" foo var ", strip: true)

Additionally, we may also extend this to pragmas.

# frozen_string_literal:

to be equivalent to:

# frozen_string_literal: true

Updated by marcandre (Marc-Andre Lafortune) about 1 month ago

I'm personally hoping that strip: could be syntax sugar for strip: strip...

Updated by baweaver (Brandon Weaver) about 1 month ago

I would concur with Marc-Andre on this one, I believe punning would be a more valuable feature, especially for keyword arguments.

Examples:

def method_name(foo: 1, bar: 2, baz: 3)
  foo + bar + baz
end

foo = 1
bar = 2
baz = 3

method_name(foo:, bar:, baz:) # 1, 2, 3
# => 6

# Also punning in hashes which would be distinct from block syntax:
{ foo:, bar:, baz: }
# => { foo: 1, bar: 2, baz: 3 }

May open a separate ticket on those ideas or amend a current punning proposition

Edit - opened a ticket

Also available in: Atom PDF