刚上手 rails 的小白,碰到两种冒号用法:
:xxxx
xxxx:
我的理解第一种相当于普通字符串的简单定义,:xxxx
可以看作其它语言里的 "xxxx"
。
第二种 xxxx:
,是 ruby 为了方便定义 map (ruby 称为 hash ) 中 key 的写法。
以 rails 的 before_action
函数为例:
# before_action 的完整调用
before_action("authenticate_user_token", {"only" => "logout"})
# 简化字符串
before_action(:authenticate_user_token, {:only => :logout})
# 简化 key
before_action(:authenticate_user_token, {only: :logout})
# 省略括号
before_action :authenticate_user_token, {only: :logout}
# 当散列是方法调用的最后一个参数时,可以省略花括号
before_action :authenticate_user_token, only: :logout