📖

[Feature #15192] インスタンス変数の設定を簡単にできるショートハンドがほしいという要望

2024/05/12に公開

[Feature #15192] Introduce a new "shortcut assigning" syntax to convenient setup instance variables

  • インスタンス変数の設定を簡単にできるショートハンドがほしいという要望
  • イメージ以下のようなコード
class Person
  def initialize(name:, age:, gender:, country:)
    @name = name
    @age = age
    @gender = gender
    @country = country
  end
end
  • 以下のようなショートハンドの提案
class Person
  # 仮引数に @ を付ける
  def initialize(@name:, @age:, @gender:, @country:)
  end

  # 以下と同じ
  # def initialize(name:, age:, gender:, country:)
  #   @name = name
  #   @age = age
  #   @gender = gender
  #   @country = country
  # end

  # it should also work on position style arguments
  def initialize2(@name, @age, @gender, @country)
  end
end
def initialize(name: as @name, age: as @age)
  ...
end
  • こういう構文はほしいんだけど、イマイチいい書き方が思いつかない
  • StructData を継承するのが今だといいんですかねー
class Person < Data.define(:name, :age, :gender, :country)
end

pp Person.new(name: "homu", age: 14, gender: "女性", country: :japan)
GitHubで編集を提案

Discussion