理解Ruby方法参数语法

时间:2016-01-16 13:21:03

标签: ruby keyword-argument

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

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)这样的方法参数语法。有人可以解释这意味着什么,或者指出我在哪里查找这个方向的正确方向?

1 个答案:

答案 0 :(得分:4)

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