2015-09-13 2 views
1

Я пытаюсь создать генератор случайных чисел в Lua. Я узнал, что могу просто использовать math.random(1,100) для рандомизации числа от 1 до 100, и этого должно быть достаточно.Случайное число в сценарии Lua Load Impact

Но я действительно не понимаю, как использовать случайное число как переменные в скрипте.

Пробовал это, но, конечно, это не сработало.

$randomCorr = math.random(1,100); 

http.request_batch({ 
    {"POST", "https://store.thestore.com/priceAndOrder/selectProduct", headers={["Content-Type"]="application/json;charset=UTF-8"}, data="{\"ChoosenPhoneModelId\":4,\"PricePlanId\":\"phone\",\"CorrelationId\":\"$randomCorr\",\"DeliveryTime\":\"1 vecka\",\"$$hashKey\":\"006\"},\"ChoosenAmortization\":{\"AmortizationLength\":0,\"ChoosenDataPackage\":{\"Description\":\"6 GB\",\"PricePerMountInKr\":245,\"DataAmountInGb\":6,\"$$hashKey\":\"00W\"},\"ChoosenPriceplan\":{\"IsPostpaid\":true,\"Title\":\"Fastpris\",\"Description\":\"Fasta kostnader till fast pris\",\"MonthlyAmount\":0,\"AvailiableDataPackages\":null,\"SubscriptionBinding\":0,\"$$hashKey\":\"00K\"}}", auto_decompress=true}, 
    {"GET", "https://store.thestore.com/api/checkout/getproduct?correlationId=$randomCorr", auto_decompress=true}, 
    }) 

ответ

3

В Lua, вы не можете создать имя переменной с $. Вот где ваша главная проблема. Как только $ будет удален из вашего кода, мы можем легко увидеть, как обращаться к переменным в Lua.

randomCorr = math.random(100) 
print("The random number:", randomCorr) 
randomCorr = math.random(100) 
print("New Random Number:", randomCorr) 

Кроме того, конкатенация не работает так, как вы подразумеваете ее в своем массиве Http. Вы должны сцепить значение при помощи .. в Lua

Взгляните на следующий пример:

ran = math.random(100) 
data = "{\""..ran.."\"}" 
print(data) 
--{"14"} 

Та же логика может быть подразумеваемой в код:

data="{\"ChoosenPhoneModelId\":4,\"PricePlanId\":\"phone\",\"CorrelationId\":\""..randomCorr.."\",\"DeliveryTime\":\"1 vecka\",\"$$hashKey\":\"006\"},\"ChoosenAmortization\":{\"AmortizationLength\":0,\"ChoosenDataPackage\":{\"Description\":\"6 GB\",\"PricePerMountInKr\":245,\"DataAmountInGb\":6,\"$$hashKey\":\"00W\"},\"ChoosenPriceplan\":{\"IsPostpaid\":true,\"Title\":\"Fastpris\",\"Description\":\"Fasta kostnader till fast pris\",\"MonthlyAmount\":0,\"AvailiableDataPackages\":null,\"SubscriptionBinding\":0,\"$$hashKey\":\"00K\"}}" 

Или вы можете отформатируйте значение с использованием одного из методов, предоставленных библиотекой строк.

Посмотрите на следующий пример:

ran = math.random(100) 
data = "{%q}" 
print(string.format(data,ran)) 
--{"59"} 

%q спецификатор будет принимать все, что вы положили в качестве входных данных, и безопасно окружать его с предложениями

Та же логика может быть применена к вашей Http данных.

+1

Большое спасибо. у меня банковская голова по этому поводу :) теперь работает как шарм. еще раз спасибо. – Dymond

1

Вот исправленный вариант фрагмента кода:

local randomCorr = math.random(1,100) 

http.request_batch({ 
{"POST", "https://store.thestore.com/priceAndOrder/selectProduct", headers={["Content-Type"]="application/json;charset=UTF-8"}, data="{\"ChoosenPhoneModelId\":4,\"PricePlanId\":\"phone\",\"CorrelationId\":\"" .. randomCorr .. "\",\"DeliveryTime\":\"1 vecka\",\"$$hashKey\":\"006\"},\"ChoosenAmortization\":{\"AmortizationLength\":0,\"ChoosenDataPackage\":{\"Description\":\"6 GB\",\"PricePerMountInKr\":245,\"DataAmountInGb\":6,\"$$hashKey\":\"00W\"},\"ChoosenPriceplan\":{\"IsPostpaid\":true,\"Title\":\"Fastpris\",\"Description\":\"Fasta kostnader till fast pris\",\"MonthlyAmount\":0,\"AvailiableDataPackages\":null,\"SubscriptionBinding\":0,\"$$hashKey\":\"00K\"}}", auto_decompress=true}, 
{"GET", "https://store.thestore.com/api/checkout/getproduct?correlationId=" .. randomCorr, auto_decompress=true}, 
}) 

Существует нечто, называемое $$ hashKey также, в строку в кавычках. Не уверен, что это должно быть ссылка на переменную или нет. Если это так, его также необходимо объединить в результирующую строку, используя оператор .. (как и с переменной randomCorr).

Смежные вопросы