我目前有一段代码如下:
if match = request.path.match(/\A\/(?<slug>(?!admin|assets)\w+)/)
match[:slug]
end
Run Code Online (Sandbox Code Playgroud)
有没有办法使用安全导航操作符(在2.3.0中引入)来避免这种if条件?
saw*_*awa 31
只需使用普通(非糖)形式.
request.path.match(/\A\/(?<slug>(?!admin|assets)\w+)/)&.[](:slug)
Run Code Online (Sandbox Code Playgroud)
为了更好的可读性,我会选择#dig而不是#[].
喜欢,
request.path.match(/\A\/(?<slug>(?!admin|assets)\w+)/)&.dig(:slug)
Run Code Online (Sandbox Code Playgroud)
代替
request.path.match(/\A\/(?<slug>(?!admin|assets)\w+)/)&.[](:slug)
Run Code Online (Sandbox Code Playgroud)
小智 5
为了提高可读性,我更喜欢使用ruby 1.9.1中提供的match的named_captures方法,以及ruby 2.3.0中可用的安全运算符。
request.path.match(/\A\/(?<slug>(?!admin|assets)\w+)/)&.named_captures&.dig('slug')
Run Code Online (Sandbox Code Playgroud)