了解 Ruby 方法参数语法

Understanding Ruby method parameters syntax

我一直在关注 Pluralsight 上的 RSpec 教程,以创建基本纸牌游戏。当 class 定义为:

class Card
  def initialize(suit:, rank:)
    @suit = suit
    @rank =
      case rank
      when :jack then 11
      when :queen then 12
      when :king then 13
      else rank
      end
  end
end

RSpec测试代码例如:

RSpec.describe 'a playing card' do
  it 'has a suit' do
    raise unless Card.new(suit: :spades, rank: 4).suit == :spades
  end
end

我还没有遇到过这样的方法参数语法(suit: :spades, rank: 4)。谁能解释一下这是什么意思,或者告诉我在哪里可以找到它的正确方向?

它被称为关键字参数。与 位置参数 不同,您可以按任何顺序传递它们,但您必须提供它们的名称。这可以极大地提高可读性,特别是对于具有更高 arity 的方法。 More on the subject