Существует несколько различных правил и выводов: во-первых, Scala выводит фигурные скобки, когда параметр является функцией, например. в list.map(_ * 2)
выводятся фигурные скобки, это всего лишь более короткая форма list.map({_ * 2})
. Во-вторых, Scala позволяет пропустить скобки в последнем списке параметров, если в списке параметров есть один параметр, и это функция, поэтому list.foldLeft(0)(_ + _)
можно записать как list.foldLeft(0) { _ + _ }
(или list.foldLeft(0)({_ + _})
, если вы хотите быть дополнительным явным).
Однако, если вы добавите case
, вы получите, как указывали другие, частичную функцию вместо функции, а Scala не будет выводить фигурные скобки для частичных функций, поэтому list.map(case x => x * 2)
выиграл 't работают, но оба list.map({case x => 2 * 2})
и list.map { case x => x * 2 }
будут.
Вы обрабатываете результаты БД следующим образом:
for each_result in results:
output.insert(0, each_result)
Я рекомендую переименовать переменную, чтобы отразить ваш запрос SQL:
for recipe in results:
output.insert(0, recipe)
С более конкретным, более значимым именем переменной мы Теперь можно увидеть ошибку. Вы на самом деле перебираете строки результатов из БД, а не перебираете отдельные рецепты. Поэтому добавьте запятую, чтобы исправить ваш синтаксис:
for recipe, in results:
output.insert(0, recipe)
Если, например, оператор SELECT также запрашивает время подготовки, вы бы использовали тот же синтаксис распаковки кортежей:
for recipe, prep_time in results:
output.insert(0, recipe)
[118 ] Когда вы видите, как извлекается несколько столбцов, «распаковка» может показаться вам более естественной.