Сохранение результата переключения в Ruby - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть корпус переключателя следующим образом:

def result
  case params[:q]
  when "r4c_001"
    result = "r4c"
    description = "001"
  end
end

Когда я имею дело с одним значением внутри when, я могу также реализовать его как:

def result
  result = case params[:q]
  when "r4c_001"
    "r4c"
  end
end

Как я могу сделать это для нескольких значений, например:

def result
  result, description = case params[:q]
  when "r4c_001"
    result = "r4c"
    description = "001"
  end
end

Ваша помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Похоже, вы хотите вернуть два значения из метода result. Вы можете сделать это в операторе возврата.

def result
 case params[:q]
 when "r4c_001"
  return "r4c", "001"
 end
end

result, description = result()

Я только что видел ответ мудасобвы, и его замечание - превосходное замечание, которое может спасти вас от длинного случая.

0 голосов
/ 26 апреля 2018
def result
  case params[:q]
  when "r4c_001"
    ["r4c", "001"]
  end
end

И используйте его как:

result, description = result()

Обозначение: в данном конкретном случае та же цель может быть достигнута еще проще:

def result
  params[:q].split('_') if params[:q] == "r4c_001"
end

Sidenote2: , если params не является методом того же класса, возвращая экземпляр объекта, отвечая на #[], вы должны передать params методу в явном виде:

def result(params)
  case params[:q]
  when "r4c_001"
    ["r4c", "001"]
  end
end

И использовать его как:

result, description = result(params)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...