我有一个函数可以调用其他返回对象的函数。 我尝试使用以下格式的代码附加这些函数的返回值:
在我的model
中:
def get_cinfo(id)
return Client.find(id)
end
def get_caddress(id)
return Client.find(id).addresses
end
def get_cpolicies(id)
return Client.find(id).policies
end
def get_ccontactinfo(id)
return Client.find(id).contact_informations
end
def generate_client(id)
client = Array.new
client << get_cinfo(id) << get_caddress(id) << get_ccontactinfo(id)
end
其中: get_cinfo,get_caddress和get_ccontactinfo是返回一个或两个实例的函数
产生的错误:[get_cinfo ...]变量未定义。
为什么会这样?是否在添加到数组之后不直接允许函数调用?
编辑:我尝试将self.
添加到每个函数中,并且它起作用了。但是我在想,如果我不想向该函数添加self以使其受到保护,该怎么办?无论如何,除了由于在那个特定函数中调用这些函数之外,我还没有打算直接调用它(尚未)
答案 0 :(得分:0)
您必须首先声明client
及其值。在generate_client
上:
client = []
client << get_cinfo(id) << get_caddress(id) << get_ccontactinfo(id)
return client
答案 1 :(得分:-1)
甚至没有必要先创建数组然后单独添加到数组,因为两者可以一起完成:
def generate_client(id)
[get_cinfo(id), get_caddress(id), get_ccontactinfo(id)]
end
这将返回数组,而无需额外的方法调用。无论如何,被追加的方法调用是完全可以接受的。如果在您的示例中,数组中的值为nil
,则不是在generate_client
中创建数组的情况,而是更有可能是函数调用返回的值。