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

时间:2018-07-06 01:43:01

标签: ruby-on-rails ruby ruby-on-rails-3

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

在我的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以使其受到保护,该怎么办?无论如何,除了由于在那个特定函数中调用这些函数之外,我还没有打算直接调用它(尚未)

2 个答案:

答案 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中创建数组的情况,而是更有可能是函数调用返回的值。