定义和初始化。什么是"obj"?



我不理解下面代码的第二行,因为第一行中有"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分配给objmember_id属性,否则使用param[:id].to_i.to_i转换为整数)。

第一行中的obj = nil只是表示obj参数的默认值为nil。这意味着,如果不使用任何参数调用该方法,obj将被设置为nil。那我呢?方法可以接受0或1个参数。

最新更新