Могу ли я напрямую добавлять вызовы функций возврата в массивах? - PullRequest
0 голосов
/ 06 июля 2018

У меня есть функция, которая вызывает другие функции, которые возвращают объект. Я попытался добавить возвращаемые значения этих функций, используя этот формат кода:

по моему 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. к каждой функции, и это сработало. Мне было интересно, что если я не хочу добавлять себя к этой функции, чтобы она оставалась защищенной - в любом случае я не планирую вызывать ее (пока) напрямую по любой другой причине, кроме вызова этих функций в этой конкретной функции А.

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Нет причин даже создавать массив и затем добавлять его по отдельности, так как оба можно сделать вместе:

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

Это вернет массив без дополнительных вызовов методов. Добавляемые вызовы методов в любом случае вполне приемлемы. Если в вашем примере значение в массиве равно nil, это не тот случай, когда массив создается в generate_client, а скорее значение, возвращаемое вызовом функции.

0 голосов
/ 06 июля 2018

Вы должны сначала объявить client с его значением. Вкл generate_client:

client = []
client << get_cinfo(id) << get_caddress(id) << get_ccontactinfo(id)
return client
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...