Как я определяю входные и выходные типы данных в комментариях Python?

Функция map в Array.prototype принимает функцию обратного вызова с аргументами, (value, index) => {}. Если вы планируете деструктурировать, используйте вместо этого

this.state.data.map({key, display, nutrition, ...rest}, index) => { // index of value in this.sta
 <div key={key}>
   {display} //I am assuming this is a string not a object or array
   {nutrition} // this should be a string 
 </div>
}

Редактировать : Я предполагаю, что data похоже на

data: [
 {
   key: "",
   nutrition: "",
   display: ""
 }, 
 {
   key: "",
   nutrition: "",
   display: ""
 } 
]

Редактировать 2 [1114 ]:

Учитывая это

state {
data = 
 [
    { id: 1, 
        display: 'Pommes', 
        unity: [ 'unités' ], 
        category: [ 'fruits' ], 
        nutrition: 95, 
        vitamins: [ 'C', 'B-6' ] 
    },
    {
        id: 2,
        display: 'Poires',
        unity: [ 'unités' ],
        category: [ 'fruits' ],
        nutrition: 95,
        vitamins: [ 'C', 'B', 'E' ]
    }
];
}

Вот как это отобразить:

render() {
   return (
     <>
      {
       this.state.data && this.state.data.map(({id, display, nutrition, vitamins}) => {
          return (
           <div key={id}>
            {display} 
            {nutrition}
            {<>vitamins.map(v => v) </>} //in case you need thing such as vitamis, Array, also to eppear
          </div>
        )})
      }
     </>

   )
}
13
задан Joakim Lundborg 28 January 2009 в 10:40
поделиться

2 ответа

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

Инструменты могут быть записаны, чтобы извлечь информацию из аннотаций и сделать что-либо, что Вы хотите, включая проверку типов или генерацию документации. Но сам Python ничего не делает с информацией. Вы могли использовать для совершенно другой цели, т.е. обеспечить функцию, которая будет вызвана на параметре или объявить строку возможных возвращаемых значений.

Аннотации могут быть любым объектом:

def somefunc(param1: "string annotation", 
             param2: 151631,  
             param3: any_object): -> "some information here":

и можно получить использование объектов:

print (somefunc.func_annotations)
{'param1': "string annotation", 
 'param2': 151631,  
 'param3': <object any_object>,
 'return': "some information here"}

Предложения варианта использования обеспечиваются PEP:

  • Предоставление информации о вводе
    • Введите проверку
    • Позвольте IDE показать то, что вводит функцию, ожидает и возвращается
    • Перегрузка функции / родовые функции
    • Мосты иностранного языка
    • Адаптация
    • Функции логики предикатов
    • Отображение запроса базы данных
    • Маршалинг параметра RPC
  • Другая информация
    • Документация для параметров и возвращаемых значений

Так как функциональный синтаксис аннотации является слишком новым, он действительно не используется ни для каких производственных инструментов.

Я предлагаю использовать другие методы для документирования этого. Я использую epydoc для генерации моей документации, и это может считать информацию о вводе параметра из docstrings:

def x_intercept(m, b):
    """
    Return the x intercept of the line M{y=m*x+b}.  The X{x intercept}
    of a line is the point at which it crosses the x axis (M{y=0}).

    This function can be used in conjuction with L{z_transform} to
    find an arbitrary function's zeros.

    @type  m: number
    @param m: The slope of the line.
    @type  b: number
    @param b: The y intercept of the line.  The X{y intercept} of a
              line is the point at which it crosses the y axis (M{x=0}).
    @rtype:   number
    @return:  the x intercept of the line M{y=m*x+b}.
    """
    return -b/m

Этот пример с веб-сайта epydoc. Это может генерировать документацию во множестве форматов и может генерировать хорошие графики от Ваших классов и профилей вызова.

18
ответ дан 1 December 2019 в 20:31
поделиться

При использовании epydoc для создания документации API, у Вас есть три варианта.

  • Epytext.

  • ReStructuredText, RST.

  • Нотация JavaDoc, которая смотрит немного как epytext.

Я рекомендую RST, потому что он работает хорошо со сфинксом для генерации полного комплекта документации, который включает ссылки API. Разметка RST определяется здесь. Различные epydoc поля, которые можно указать, определяются здесь.

Пример.

def someFunction( arg1, arg2 ):
    """Returns the average of *two* (and only two) arguments.

    :param arg1: a numeric value
    :type arg1: **any** numeric type

    :param arg2: another numeric value
    :type arg2: **any** numeric type

    :return: mid-point (or arithmetic mean) between two values 
    :rtype: numeric type compatible with the args.
    """
    return (arg1+arg2)/2
9
ответ дан 1 December 2019 в 20:31
поделиться
Другие вопросы по тегам:

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