Постоянно защищенный модуль
Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Документация по модулю [ просмотреть ] [ изменить ] [ историю ] [ очистить ]

Этот модуль предоставляет ряд математических функций. Эти функции можно использовать из #invoke или из других модулей Lua.

Использование из других модулей Lua

Для использования модуля с обычных вики-страниц не требуется специальной подготовки. Если вы используете модуль из другого модуля Lua, сначала вам нужно загрузить его, например:

local  mm  =  require ( 'Модуль: Математика' )

( mmПеременная означает M odule M ath; при желании вы можете выбрать что-нибудь более информативное .)

Большинство функций в модуле имеют версию для Lua и версию для #invoke. Можно использовать функции #invoke из других модулей Lua, но использование функций Lua имеет то преимущество, что вам не нужно обращаться к объекту фрейма Lua . _Перед функциями Lua стоит знак, а перед функциями #invoke - нет.

случайный

{{#invoke: math | random}}{{#invoke: math | random | max_value }}{{#invoke: math | random | min_value | max_value }}
мм . _random () мм . _random ( max_value ) мм . _random ( минимальное_значение ,  максимальное_значение )

Генерирует случайное число.

  • Если аргументы не указаны, полученное число больше или равно 0 и меньше 1.
  • Если указан один аргумент, полученное число является целым числом от 1 до этого аргумента. Аргумент должен быть положительным целым числом.
  • Если предоставлены два аргумента, полученное число является целым числом между первым и вторым аргументами. Оба аргумента должны быть целыми числами, но могут быть отрицательными.

Эта функция не будет работать должным образом для чисел меньше -2 32 и больше 2 32-1 . Если вам нужно использовать числа вне этого диапазона, рекомендуется использовать Module: Random .

порядок

{{#invoke: math | order | n }}
мм . _order ( n )

Определяет порядок величины числа.

точность

{{#invoke: math | precision | n }}{{#invoke: math | precision | x = n }}
мм . _precision ( числовая_строка )

Определяет точность числа. Например, для «4» он вернет «0», для «4.567» он вернет «3», а для «100» он вернет «-2».

Попытки функции для синтаксического анализа строковое представление числа, и определяет , использует ли число E обозначения . По этой причине при вызове из Lua очень большие числа или очень точные числа должны вводиться напрямую в виде строк для получения точных результатов. Если они вводятся как числа, интерпретатор Lua изменит их на обозначение E, и эта функция вернет точность обозначения E, а не точность исходного числа. Это не проблема, когда номер вызывается из #invoke, поскольку весь ввод из #invoke находится в строковом формате.

Максимум

{{#invoke: math | max | v1 | v2 | v3 | ...}}
мм . _max ( v1 ,  v2 ,  v3 ,  ...)

Возвращает максимальное значение из указанных значений. Значения, которые нельзя преобразовать в числа, игнорируются.

медиана

{{#invoke: math | median | v1 | v2 | v3 | ...}}
мм . _median ( v1 ,  v2 ,  v3 ,  ...)

Возвращает медианное значение из указанных значений. Значения, которые нельзя преобразовать в числа, игнорируются.

мин

{{#invoke: math | min | v1 | v2 | v3 | ...}}
мм . _min ( v1 ,  v2 ,  v3 ,  ...)

Возвращает минимальное значение из указанных значений. Значения, которые нельзя преобразовать в числа, игнорируются.

сумма

{{#invoke: math | sum | v1 | v2 | v3 | ...}}
мм . _sum ( v1 ,  v2 ,  v3 ,  ...)

Возвращает сумму указанных значений. Значения, которые нельзя преобразовать в числа, игнорируются.

средний

{{#invoke: math | average | v1 | v2 | v3 | ...}}
мм . _среднее ( v1 ,  v2 ,  v3 ,  ...)

Возвращает среднее из указанных значений. (Точнее, возвращаемое значение является средним арифметическим .) Значения, которые нельзя преобразовать в числа, игнорируются.

круглый

{{#invoke: math | round | значение | точность }}{{#invoke: math | round | value = value | precision = precision }}
мм . _round ( значение ,  точность )

Округляет число до указанной точности.

Примечание. По состоянию на октябрь 2019 г. имеется ошибка отображения некоторых округленных чисел. При попытке округлить число, которое округляется до «n.0», например «1.02», до ближайшей десятой части цифры (т. Е. |r=1), Эта функция должна отображать «1.0», но неожиданно отображает «1». |precision_format=Вместо этого используйте параметр.

log10

{{#invoke: math | log10 | x }}
мм . _log10 ( x )

Возвращает , тем логарифм от й с использованием базы 10.log10(x)

мод

{{#invoke: math | mod | х | y }}
мм . _mod ( х ,  у )

Получает x по модулю y или остаток после xделения на y. Это верно для целых чисел до 2 53 ; для больших целых чисел оператор по модулю Lua может возвращать ошибочное значение. Эта функция решает эту проблему, возвращая, 0если модуль, заданный оператором Lua по модулю, меньше 0 или больше y.

gcd

{{#invoke: math | gcd | v1 | v2 | ...}}
мм . _gcd ( v1 ,  v2 ,  ...)

Находит наибольший общий делитель указанных значений. Значения, которые нельзя преобразовать в числа, игнорируются.

precision_format

{{#invoke: math | precision_format | value_string | точность }}
мм . _precision_format ( строка_значения ,  точность )

Округляет число до указанной точности и форматирует в соответствии с правилами, изначально использовавшимися для {{ Rnd }}. Вывод - строка.

Точность параметра должна быть целым числом. Допускаются отрицательные значения. Нецелые числа дают неожиданный результат

  • 1 234 567
  • 2: 1 234,57
  • −2: 1,200
  • 2,5: 1,234,5658476404
  • −2,5: 1,264,9110640674

разделять

{{#invoke: Math | разделить | х | y | круглый = | точность = }}
мм . _divide ( x ,  y ,  округление ,  точность )

Разделите x на y.

  • Если y, если не число, оно возвращается.
  • В противном случае, если x не является числом, оно возвращается.
  • Если round имеет значение true ("да" для #invoke), результат не имеет десятичных знаков.
  • Точность указывает, сколько цифр точности должен иметь результат.

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

cleanNumber

местный  номер ,  number_string  =  мм . _cleanNumber ( строка_числа )

Вспомогательная функция, которую можно вызывать из других модулей Lua, но не из #invoke. Это принимает строку или числовое значение в качестве входных данных, и если значение может быть преобразовано в число, cleanNumber возвращает число и числовую строку. Если значение не может быть преобразовано в число, возвращается cleanNumber nil, nil.

Смотрите также

- [[Этот модуль предоставляет ряд основных математических операций.]]local  yesno ,  getArgs  - лениво инициализируетсяlocal  p  =  {}  - содержит функции, которые должны быть возвращены из #invoke, и функции, которые будут доступны другим модулям Lua.local  wrap  =  {}  - содержит функции-оболочки, обрабатывающие аргументы из #invoke. Они действуют как посредник между функциями, предназначенными для #invoke, и функциями, предназначенными для Lua.- [[Вспомогательные функции, используемые для предотвращения дублирования кода.]] ошибка локальной функции  ( сообщение )- Создает сообщения об ошибках вики-текста.вернуть  мв . ustring . format ( '<strong class = "error"> Ошибка форматирования:% s </strong>' ,  msg )конецлокальная  функция  unpackNumberArgs ( аргументы )- Возвращает распакованный список аргументов, указанных с помощью цифровых ключей.местное  ret  =  {}для  k ,  v  в  парах ( args )  делаемесли  type ( k )  ==  'number',  тоtable.insert ( ret ,  v )конецконецвернуть  распаковать ( ret )конецлокальная  функция  makeArgArray (...)- Создает массив аргументов из списка аргументов, который может включать ноль.local  args  =  {...}  - Таблица аргументов. Он может содержать nils или нечисловые значения, поэтому мы не можем использовать ipairs.local  nums  =  {}  - хранит количество допустимых числовых аргументов.местное  ret  =  {}для  k ,  v  в  парах ( args )  делаемv  =  p . _cleanNumber ( v )если  v,  тоНУМС [ # НУМС  +  1 ]  =  Kargs [ k ]  =  vконецконецtable.sort ( НУМС )для  i ,  num  in  ipairs ( nums )  делатьret [ # ret  +  1 ]  =  args [ число ]конецвозвращение в  отставкеконецлокальная  функция  fold ( func ,  ...)- Используйте функцию для всех предоставленных аргументов и верните результат. Функция должна принимать в качестве параметров два числа,- и должен возвращать число в качестве вывода. Этот номер затем предоставляется в качестве входных данных для следующего вызова функции.местные  vals  =  makeArgArray (...)local  count  =  # vals  - Количество допустимых аргументовесли  count  ==  0,  то  верните- Выйти, если у нас нет действительных аргументов, иначе удаление первого аргумента вызовет ошибку.ноль ,  0конецместный  ret  =  table.remove ( vals ,  1 )for  _ ,  val  в  ipairs ( vals )  делатьret  =  func ( ret ,  val )конецвернуть  ret ,  countконец- [[Сверните аргументы, выборочно выбирая значения (функция func должна возвращать, когда выбирать текущее «доминирующее» значение).]]локальная  функция  binary_fold ( func ,  ...)локальное  значение  =  fold (( function ( a ,  b )  if  func ( a ,  b )  then  return  a  else  return  b  end  end ),  ...)возвращаемое  значениеконец- [[случайныйСгенерировать случайное числоИспользование:{{#invoke: Math | случайный }}{{#invoke: Math | случайный | максимальное значение}}{{#invoke: Math | случайный | минимальное значение | максимальное значение}}]] обертка функций . случайный ( аргументы )местный  первый  =  p . _cleanNumber ( аргументы [ 1 ])местная  секунда  =  p . _cleanNumber ( аргументы [ 2 ])возврат  п . _random ( первый ,  второй )конецфункция  p . _random ( первый ,  второй )math.randomseed ( mw . site . stats . edits  +  mw . site . stats . pages  +  os.time ()  +  math.floor ( os.clock ()  *  1000000000 ))- math.random выдаст ошибку, если указан явный параметр nil, поэтому нам нужно использовать операторы if для проверки параметров.если  первый  и  второй,  тоесли  first  <=  second,  то  - math.random не позволяет первому числу быть больше второго.return  math.random ( первый ,  второй )конецelseif  сначала  тогдавернуть  math.random ( первый )ещевернуть  math.random ()конецконец- [[порядокОпределите порядок величины числаИспользование:{{#invoke: Math | заказ | ценить }}]] обертка функций . порядок ( аргументы )локальная  input_string  =  ( арг [ 1 ]  или  арг . х  или  '0' );локальный  input_number  =  p . _cleanNumber ( input_string );если  input_number  ==  nil,  тогдаreturn  err ( 'ввод по порядку величины не является числовым' )ещевозврат  п . _order ( input_number )конецконецфункция  p . _order ( x )если  x  ==  0,  то  вернуть  0  конецвернуть  math.floor ( math . log10 ( math.abs ( x )))конец- [[точностьОпределяет точность числа, используя строковое представлениеИспользование:{{#invoke: Math | точность | ценить }}]] обертка функций . точность ( аргументы )локальная  input_string  =  ( арг [ 1 ]  или  арг . х  или  '0' );локальная  trap_fraction  =  аргументы . check_fraction ;локальный  input_number ;если  нет  да нет  тогдаyesno  =  require ( 'Модуль: Да нет' )конецif  yesno ( trap_fraction ,  true )  then  - Возвращает истину для всех входных данных, кроме nil, false, «no», «n», «0» и некоторых других. См. [[Модуль: Да, нет]].local  pos  =  string.find ( input_string ,  '/' ,  1 ,  истина );если  pos  ~ =  nil,  тоесли  string.find ( input_string ,  '/' ,  pos  +  1 ,  true )  ==  nil,  толокальный  знаменатель  =  string.sub ( input_string ,  pos + 1 ,  - 1 );локальная  denom_value  =  ToNumber ( знаменатель );если  denom_value  ~ =  nil,  товернуть  математику . log10 ( denom_value );конецконецконецконецinput_number ,  input_string  =  p . _cleanNumber ( input_string );если  input_string  ==  nil,  тогдаreturn  err ( 'точность ввода не является числовой' )ещевозврат  п . _precision ( input_string )конецконецфункция  p . _precision ( x )если  type ( x )  ==  'number',  тох  =  tostring ( х )конецx  =  строка.upper ( x )местный  десятичный  =  x : найти ( '%.' )локальный  exponent_pos  =  x : find ( 'E' )локальный  результат  =  0 ;если  exponent_pos  ~ =  nil,  толокальная  экспонента  =  string.sub ( x ,  exponent_pos  +  1 )x  =  string.sub ( x ,  1 ,  exponent_pos  -  1 )результат  =  результат  -  ToNumber ( показатель степени )конецесли  десятичный  ~ =  ноль,  тоresult  =  result  +  string.len ( x )  -  десятичныйвернуть  результатконецместный  pos  =  string.len ( x );в то время как  x : byte ( pos )  ==  string.byte ( '0' )  dopos  =  pos  -  1результат  =  результат  -  1если  pos  <=  0,  товозврат  0конецконецвернуть  результатконец- [[МаксимумНаходит максимальный аргументИспользование:{{#invoke: Math | макс | значение1 | значение2 | ...}}Обратите внимание: любые значения, которые не оцениваются как числа, игнорируются.]] обертка функций . макс ( аргументы )возврат  п . _max ( unpackNumberArgs ( аргументы ))конецфункция  p . _max (...)local  max_value  =  binary_fold (( функция ( a ,  b )  return  a  >  b  end ),  ...)если  max_value,  товернуть  max_valueконецконец- [[медианаНайдите медиану набора чиселИспользование:{{#invoke: Math | медиана | number1 | число2 | ...}}ИЛИ ЖЕ{{#invoke: Math | медиана}}]] обертка функций . медиана ( аргументы )возврат  п . _median ( unpackNumberArgs ( аргументы ))конецфункция  p . _median (...)местные  vals  =  makeArgArray (...)местное  количество  =  # валсtable.sort ( vals )если  count  ==  0,  товозврат  0конецесли  п . _mod ( count ,  2 )  ==  0,  тогдавозврат  ( vals [ count / 2 ]  +  vals [ count / 2 + 1 ]) / 2ещеОбратные  Vals [ Math.ceil ( кол / 2 )]конецконец- [[минНаходит минимальный аргументИспользование:{{#invoke: Math | мин | значение1 | значение2 | ...}}ИЛИ ЖЕ{{#invoke: Math | min}}Когда используется без аргументов, он принимает входные данные от родителя.Рамка. Обратите внимание: любые значения, которые не оцениваются как числа, игнорируются.]] обертка функций . мин ( аргументы )возврат  п . _min ( unpackNumberArgs ( аргументы ))конецфункция  p . _min (...)local  min_value  =  binary_fold (( функция ( a ,  b )  возвращает  a  <  b  end ),  ...)если  min_value,  товернуть  min_valueконецконец- [[суммаНаходит суммуИспользование:{{#invoke: Math | сумма | значение1 | значение2 | ...}}ИЛИ ЖЕ{{#invoke: Math | сумма}}Обратите внимание: любые значения, которые не оцениваются как числа, игнорируются.]] обертка функций . сумма ( аргументы )возврат  п . _sum ( unpackNumberArgs ( аргументы ))конецфункция  p . _sum (...)локальные  суммы ,  count  =  fold (( function ( a ,  b )  return  a  +  b  end ),  ...)если  не  суммы,  товозврат  0ещевозвратные  суммыконецконец- [[среднийНаходит среднееИспользование:{{#invoke: Math | средний | значение1 | значение2 | ...}}ИЛИ ЖЕ{{#invoke: Math | средний }}Обратите внимание: любые значения, которые не оцениваются как числа, игнорируются.]] обертка функций . среднее ( аргументы )возврат  п . _average ( unpackNumberArgs ( аргументы ))конецфункция  p . _average (...)локальная  сумма ,  count  =  fold (( function ( a ,  b )  return  a  +  b  end ),  ...)если  не  сумма,  товозврат  0ещевозвратная  сумма  /  счетконецконец- [[круглыйОкругляет число до указанной точностиИспользование:{{#invoke: Math | круглый | значение | точность }}-]] обертка функций . раунд ( аргументы )местное  значение  =  p . _cleanNumber ( арг [ 1 ]  или  арг . значение  или  0 )местная  точность  =  p . _cleanNumber ( аргументы [ 2 ]  или  аргументы . точность  или  0 )если  значение  ==  ноль  или  точность  ==  ноль,  тоreturn  err ( 'круглый ввод выглядит нечисловым' )ещевозврат  п . _round ( значение ,  точность )конецконецфункция  p . _round ( значение ,  точность )локальная  Rescale  =  Math.pow ( 10 ,  точность  или  0 );вернуть  math.floor ( значение  *  rescale  +  0.5 )  /  rescale ;конец- [[log10возвращает журнал (основание 10) числаИспользование:{{#invoke: Math | log10 | Икс }}]] обертка функций . log10 ( аргументы )вернуть  математику . log10 ( аргументы [ 1 ])конец- [[модРеализует оператор по модулюИспользование:{{#invoke: Math | мод | х | y}}-]] обертка функций . мод ( аргументы )местный  x  =  p . _cleanNumber ( аргументы [ 1 ])локальный  y  =  p . _cleanNumber ( аргументы [ 2 ])если  не  х,  тоreturn  err ( 'первый аргумент мода не является числовым' )иначе, если  не  у,  тоreturn  err ( 'второй аргумент мода не является числовым' )ещевозврат  п . _mod ( х ,  у )конецконецфункция  p . _mod ( х ,  у )местный  ret  =  x  %  yесли  нет  ( 0  <=  ret  и  ret  <  y ),  тоret  =  0конецвозвращение в  отставкеконец- [[gcdВычисляет наибольший общий делитель нескольких чисел.Использование:{{#invoke: Math | gcd | значение 1 | значение 2 | значение 3 | ...}}-]] обертка функций . gcd ( аргументы )возврат  п . _gcd ( unpackNumberArgs ( аргументы ))конецфункция  p . _gcd (...)локальная  функция  findGcd ( a ,  b )местный  r  =  bместный  oldr  =  aа  г  ~ =  0  делаемлокальный  фактор  =  math.floor ( oldr  /  r )oldr ,  r  =  r ,  oldr  -  частное  *  rконецесли  oldr  <  0,  тоoldr  =  oldr  *  - 1конецвернуть  старыйконецлокальный  результат ,  count  =  fold ( findGcd ,  ...)вернуть  результатконец- [[precision_formatОкругляет число до указанной точности и форматирует в соответствии с правилами.изначально использовался для {{template: Rnd}}. Вывод - строка.Использование:{{#invoke: Math | precision_format | номер | точность }}]] обертка функций . precision_format ( аргументы )локальная  строка_значения  =  аргументы [ 1 ]  или  0местная  точность  =  args [ 2 ]  или  0возврат  п . _precision_format ( строка_значения ,  точность )конецфункция  p . _precision_format ( строка_значения ,  точность )- Для доступа к встроенному форматеру Mediawiki.местные  языки  =  мвт . getContentLanguage ();местная  ценностьзначение ,  value_string  =  p . _cleanNumber ( строка_значения )точность  =  p . _cleanNumber ( точность )- Проверить ввод нечисловых чиселесли  значение  ==  ноль  или  точность  ==  ноль,  тоreturn  err ( 'неверный ввод при округлении' )конецлокальный  current_precision  =  p . _precision ( значение )местный  заказ  =  стр . _order ( значение )- Из-за эффектов округления необходимо ограничить возвращаемую точность ниже- некоторые обстоятельства, поскольку конечные цифры будут сообщены неточно.если  порядок  +  точность  > =  14,  тоесли  заказ  +  п . _precision ( value_string )  > =  14,  тогдаprecision  =  13  -  порядок ;конецконец- При округлении обрезать лишние цифрыесли  точность  <  current_precision,  тозначение  =  p . _round ( значение ,  точность )current_precision  =  стр . _precision ( значение )конецлокальная  FORMATTED_NUM  =  языки : formatNum ( Math.abs ( значение ))местный  знак- Используйте правильный унарный знак минус, а не ASCII по умолчаниюесли  значение  <  0,  тознак  =  '-'ещезнак  =  ''конец- Обработка случаев, требующих научного обозначенияесли  string.find ( FORMATTED_NUM ,  'E' ,  1 ,  истинной )  ~ =  ноль  или  Math.abs ( порядка )  > =  9 ,  тозначение  =  значение  *  math.pow ( 10 ,  - порядок )current_precision  =  current_precision  +  заказточность  =  точность  +  порядокFORMATTED_NUM  =  языки : formatNum ( Math.abs ( значение ))ещезаказ  =  0 ;конецformatted_num  =  знак  ..  formatted_num- Прокладка с нулями, если нужноесли  current_precision  <  точность,  томестное  заполнениеесли  current_precision  <=  0,  тоесли  точность  >  0,  толокальный  zero_sep  =  lang : formatNum ( 1.1 )FORMATTED_NUM  =  FORMATTED_NUM  ..  zero_sep : суб ( 2 , 2 )заполнение  =  точностьесли  заполнение  >  20,  тоpadding  =  20конецformatted_num  =  formatted_num  ..  string.rep ( '0' ,  заполнение )конецещеpadding  =  точность  -  current_precisionесли  заполнение  >  20,  тоpadding  =  20конецformatted_num  =  formatted_num  ..  string.rep ( '0' ,  заполнение )конецконец- При необходимости добавьте экспоненциальную запись.если  порядок  ~ =  0,  то- Используйте правильный унарный знак минус, а не ASCII по умолчаниюесли  порядок  <  0,  тоorder  =  '-'  ..  lang : formatNum ( math.abs ( порядок ))ещеorder  =  lang : formatNum ( порядок )конецformatted_num  =  formatted_num  ..  '<span style = "margin: 0 .15em 0 .25em"> × </span> 10 <sup>'  ..  order  ..  '</sup>'конецвернуть  formatted_numконец- [[разделятьРеализует оператор деленияИспользование:{{#invoke: Math | разделить | х | y | круглый = | точность =}}-]] обертка функций . разделить ( аргументы )локальный  x  =  args [ 1 ]локальный  y  =  args [ 2 ]локальный  раунд  =  аргументы . круглыйместная  точность  =  аргументы . точностьесли  нет  да нет  тогдаyesno  =  require ( 'Модуль: Да нет' )конецвозврат  п . _divide ( x ,  y ,  да , нет ( округление ),  точность )конецфункция  p . _divide ( x ,  y ,  округление ,  точность )если  y  ==  nil  или  y  ==  "",  тоreturn  err ( "Пустой делитель" )ElseIf  не  ToNumber ( у ) ,  тоесли  type ( y )  ==  'string'  и  string.sub ( y ,  1 ,  1 )  ==  '<',  товернуть  yещеreturn  err ( "Не число:"  ..  y )конециначе если  x  ==  nil  или  x  ==  ""  тогдаreturn  err ( "Пустой дивиденд" )ElseIf  не  ToNumber ( х ) ,  тоесли  type ( x )  ==  'string'  и  string.sub ( x ,  1 ,  1 )  ==  '<',  товернуть  хещеreturn  err ( "Не число:"  ..  x )конецещелокальный  z  =  x  /  yесли  круглый,  товозврат  п . _round ( z ,  0 )elseif  точность  тогдавозврат  п . _round ( z ,  точность )ещевернуть  zконецконецконец- [[Вспомогательная функция, которая численно интерпретирует ввод. Есливвод не выглядит числом, пытается оценить его каквыражение функций парсера.]]функция  p . _cleanNumber ( строка_числа )если  type ( number_string )  ==  'number',  то- Нам передали номер, поэтому обрабатывать не нужно.вернуть  number_string ,  tostring ( number_string )elseif  type ( number_string )  ~ =  'string'  или  нет  number_string : find ( '% S' )  тогда- Нам передали не строку или пустую строку, так что выходите.вернуть  ноль ,  ноль ;конец- Попытка базовой конверсииместный  номер  =  tonumber ( number_string )- В случае неудачи попытайтесь оценить ввод как выражениеесли  число  ==  ноль,  толокальный  успех ,  результат  =  pcall ( mw . ext . ParserFunctions . expr ,  number_string )если  успех,  точисло  =  ToNumber ( результат )number_string  =  tostring ( число )ещечисло  =  нольnumber_string  =  нольконецещеnumber_string  =  number_string : match ( "^% s * (.-)% s * $" )  - Строка действительна, но может содержать отступы, очистите ее.number_string  =  number_string : match ( "^% + (. *) $" )  или  number_string  - Обрезать любые начальные знаки +.если  number_string : find ( '^% -? 0 [xX]' ),  то- Число использует нотацию 0xnnn для обозначения основания 16; вместо этого используйте номер, который обнаружил Lua.number_string  =  tostring ( число )конецконец номер возврата ,  number_stringконец- [[Функция-оболочка, выполняющая базовую обработку аргументов. Это гарантирует, что все функции из #invoke могут использовать либо текущийframe или родительский фрейм, а также обрезает пробелы для всех аргументов и удаляет пустые аргументы.]]локальный  mt  =  {  __index  =  function ( t ,  k ) функция возврата ( фрейм )если  не  getArgs,  тоgetArgs  =  require ( 'Модуль: аргументы' ). getArgsконецreturn  wrap [ k ] ( getArgs ( frame ))  - Обработка аргументов предоставляется Module: Arguments. Пробелы обрезаются, а пустые аргументы удаляются.конецконец  }вернуть  setmetatable ( p ,  mt )