我一直在看Sinatra上的几个教程,但是找不到区别,比如说:
get "/hey/*/there/*"
VS
get "/hey/:first/there/:second"
我看到的唯一区别是访问参数的方式。因此,在第一种方式中,您可以通过以下方式访问它:
params[:splat][0]
params[:splat[1]
而第二种方式:
params[:first]
params[:second]
是Sinatra中的一个命名参数,只是一个我们给它命名的通配符?这是唯一的区别吗?
答案 0 :(得分:2)
他们不太一样。如果要匹配不确定数量的参数而不是单个(命名)参数,则Splats可能很有用。例如:
# Will match: "/hey/:first/there/:second"
# Will match: "/hey/*/there/*"
GET /hey/first/there/second
# Won't match: "/hey/:first/there/:second"
# Will match: "/hey/*/there/*"
GET /hey/first/second/there/third/fourth