我可以直接在数组中附加返回函数调用吗?



我有一个函数,它调用返回对象的其他函数。 我尝试使用以下代码格式附加这些函数的返回值:

在我的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 添加到该函数中以使其受到保护怎么办——无论如何,除了在该特定函数 A 中调用这些函数之外,我不打算出于任何其他原因直接调用它。

您必须首先声明client的值。generate_client

client = []
client << get_cinfo(id) << get_caddress(id) << get_ccontactinfo(id)
return client

甚至没有理由创建数组然后单独附加到它,因为两者都可以一起完成:

def generate_client(id)
[get_cinfo(id), get_caddress(id), get_ccontactinfo(id)]
end

这将返回数组,而无需额外的方法调用。无论如何,追加的方法调用是完全可以接受的。如果在示例中数组中的值是nil,则不是在generate_client中创建数组的情况,而更有可能是函数调用返回的值。

最新更新