лучшие способы написания вложенных для и если циклов в Python 3

Если вы используете эту функцию для генерации версии HTML5 datepicker для браузеров, формат даты должен быть yyyy-MM-dd (формат ISO). Используя TextBoxFor(), он должен быть

@Html.TextBoxFor(m => m.InitialDate, "{0:yyyy-MM-dd}", new { @class = "form-control", type = "date" })

. В качестве альтернативы добавьте следующие атрибуты к свойству

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public Nullable<System.DateTime> InitialDate { get; set; }

и в представлении используйте

@Html.EditorFor(m => m.InitialDate)

Обратите внимание, что это добавляет атрибут type="date"

0
задан Alex Blakemore 4 March 2019 в 21:39
поделиться

1 ответ

Мы не знаем, какой класс newrow. Для этого я буду использовать идентификатор RowClass.

(например, RowClass = newrow.__class__)

Идея состоит в том, чтобы создать словарь с целыми числами в качестве ключей и функциями для вызова в качестве значений и найти функцию со значением по умолчанию setDouble

[ 1111] Создайте его один раз при запуске (иначе, это менее интересно с точки зрения производительности), что объясняет, что я не использую newrow и объектную нотацию, что потребует перестройки словаря при каждом новом значении newrow.

calldict = {
  15 : RowClass.setCharString,
  7  : RowClass.setInteger,
  11 : RowClass.setBoolean,
  12 : lambda self,i,r : RowClass(self,i,r.year,r.month,r.day)  # special case to match 2 arguments
  # same principle for others, of course
}

ваш цикл с добавлением, сначала поиск функции, затем вызов функции:

while row is not None:
    for i in range(0,colCount):
        if row[i] is not None:

            # look up the function

            function_to_call = calldict.get(i,RowClass.setDouble)

            # call the function, passing the object as first argument:

            function_to_call(newrow,i,row[i])
0
ответ дан Jean-François Fabre 4 March 2019 в 21:39
поделиться
Другие вопросы по тегам:

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