Crystal 的命名参数快捷方式

Named arguments shortcut for Crystal

在下面的代码中命名参数必须重复,有没有办法缩短表达式?

struct Figure
  getter id :      String
  getter hash :    String
  getter title :   String

  def initialize(@id, @hash, @title)
  end
end

id = "Figure 1", hash = "123", title = "Some figure"

Figure.new id: id, hash: hash, title: title

类似于下面的代码,但保持其命名而不是位置?

Figure.new id, hash, title

或者也许

Figure.new{ id, hash, title }

我不知道有什么方法可以缩短它。

我认为当您将局部变量的名称与方法参数的名称联系起来时,这将是一种危险的语义,因为在一个地方改变事物会在另一个地方产生不可预见的影响。

对于大多数用例,使用位置参数应该没问题。如果您想跳过一些参数,您可以将位置参数和命名参数结合起来。