Оберните функцию и завершите ее замыканием, передав имя модуля в функцию - PullRequest
0 голосов
/ 20 июня 2020

Привет, я хочу сделать свою функцию более модульной и в конечном итоге заключить ее в закрытие.

Сейчас у меня есть эта функция:

  def get_all_perfume_by_name_con_sex(query, name, concentration, gender) do 
    from p in query,
      join: j in Fumigate.Fragrance.PerfumeCompanyJoin, where: p.id == j.perfume_id,
      where: [perfume_name: ^name, 
              concentration: ^concentration,
              gender: ^gender
      ],
      select: j.company_id 
  end

Мне было любопытно, как передать модуль в функция в качестве параметра, а точнее линия Fumigate.Fragrance.PerfumeCompanyJoin.

Возможно ли это?

  def get_all_perfume_by_name_con_sex_modulename(query, name, concentration, gender, modulename) do 
    from p in query,
      join: j in modulename, where: p.id == j.perfume_id,
      where: [perfume_name: ^name, 
              concentration: ^concentration,
              gender: ^gender
      ],
      select: j.company_id 
  end

Возможно ли что-то подобное?

Я хочу в конечном итоге заверните новую функцию в закрытие.

Спасибо!

1 Ответ

1 голос
/ 20 июня 2020

Да, это работает так же, как введение любого другого значения в запрос - используя ^.

В запросе сделайте следующее:

join: j in ^modulename, where: p.id == j.perfume_id

и передайте Fumigate.Fragrance.PerfumeCompanyJoin на вызов функции:

get_all_perfume_by_name_con_sex_modulename(_, _, _, _, Fumigate.Fragrance.PerfumeCompanyJoin)
...