Фигурные скобки при заполнении виджета из базы данных

Существует несколько различных правил и выводов: во-первых, 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 } будут.

0
задан DT2000 8 March 2019 в 00:12
поделиться

1 ответ

Вы обрабатываете результаты БД следующим образом:

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 ] Когда вы видите, как извлекается несколько столбцов, «распаковка» может показаться вам более естественной.

0
ответ дан J_H 8 March 2019 в 00:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: