我不理解下面代码的第二行,因为第一行中有"obj=nil"。考虑到这一点,在我看来,第二行"obj"总是变为零,返回false,params[:id].to_i将被放入id_num中。你能告诉我为什么它是这样写的吗?
☆应用程序_控制器
def me? obj = nil
id_num = obj !=nil ? obj.member_id : params[:id].to_i
if session[:user_id] == id_num then
return true
else
return false
end
end
声明一个参数设置为nil
的方法意味着该参数是可选的。
def output_object_or_say_duck(obj=nil)
if obj
puts obj
else
puts 'Duck'
end
end
可选参数作为设计模式的一个很好的例子是,如果需要可以自定义的默认行为。web请求就是一个很好的例子。
def make_web_request(website, parameters={}) # parameters OR empty hash
Net::HTTP.get("#{website}?#{ parameters.to_query }")
end
这行代码:
id_num = obj !=nil ? obj.member_id : params[:id].to_i
是一个三元运算符,表示如果对象存在,则将id_num
分配给obj
的member_id
属性,否则使用param[:id].to_i
(.to_i
转换为整数)。
第一行中的obj = nil
只是表示obj参数的默认值为nil。这意味着,如果不使用任何参数调用该方法,obj将被设置为nil。那我呢?方法可以接受0或1个参数。