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

dgo*_*o.a 1 http-headers crystal-lang

我查看了两者的源代码[]=以及添加/操作头文件.add时的源代码.我仍然对两种添加/设置标题的方法感到困惑.这两种方法有什么区别?

Fau*_*lar 6

[]= 用新的值数组替换所有标题键内容

puts response.headers["Accept-Language"] # => ["de"]
response.headers["Accept-Language"] = "de-CH" # or ["de-CH"]
puts response.headers["Accept-Language"] # => ["de-CH"]
Run Code Online (Sandbox Code Playgroud)

.add检查标头密钥是否存在并附加值:

puts response.headers["Accept-Language"] # => ["de"]
response.headers.add "Accept-Language", "de-CH"
puts response.headers["Accept-Language"] # => ["de", "de-CH"]
Run Code Online (Sandbox Code Playgroud)