HTTP::Server::Response#headers 的 `[]=` 和 `add` 有什么区别?

What is the difference between `[]=` and `add` for HTTP::Server::Response#headers?

我在 adding/manipulating headers 时查看了 []=.add 的源代码。我仍然对为什么有两种方法 add/set headers 感到困惑。这两种方法有什么区别?

[]= 将所有 header 键内容替换为新的数组值

puts response.headers["Accept-Language"] # => ["de"]
response.headers["Accept-Language"] = "de-CH" # or ["de-CH"]
puts response.headers["Accept-Language"] # => ["de-CH"]

.add 检查 header 键是否存在并附加值:

puts response.headers["Accept-Language"] # => ["de"]
response.headers.add "Accept-Language", "de-CH"
puts response.headers["Accept-Language"] # => ["de", "de-CH"]