Неверный аргумент №3 для "форматирования" (ожидаемая строка, полученная логическая переменная)?
Редактирование файла lua для скина дождемера "Вам нужен пиджак" с ошибкой в названии этого кода
--[[ Given the current temperature, return the appropriate
string for the main string meter ]]
local function getMainString( temp )
local negation = (temp > Settings.Ss_Limit) and " don't" or ""
local summerwear = (temp < Settings.Ss_Limit) and (temp > Settings.Vest_Limit) and "shirt and shorts"
local innerwear = (temp < Settings.Vest_Limit) and (temp > Settings.Jacket_Limit) and "vest"
local southerwear = (temp < Settings.Jacket_Limit) and (temp > Settings.Coat_Limit) and "jacket"
local outerwear = (temp < Settings.Coat_Limit) and "coat"
return string.format("You%s need a %s", negation, (summerwear or innerwear or southerwear or outerwear))
end
Предполагается дать правильную одежду в зависимости от температуры. Я пытался с разными местами для изменения температуры, и единственный раз, когда я получаю ошибку, это когда температура превышает Ss_limit. У меня нет большого опыта программирования, спасибо заранее
2 ответа
Когда temp
больше чем Settings.Ss_Limit
или равно любому из Settings.*_Limit
, все summerwear
, innerwear
, southerwear
а также coatwear
будет false
, Это делают (summerwear or innerwear or southerwear or outerwear)
быть false
(логическое значение) вместо строки, которая вызывает ошибку.
Возможное исправление:
--[[ Given the current temperature, return the appropriate
string for the main string meter ]]
local function getMainString( temp )
local negation = (temp > Settings.Ss_Limit) and " don't" or ""
--[[ this is used to produce "You don't need a cloth" when
temp is greater than Ss_Limit. Adjust the string based on your own need.
]]
local clothwear = (temp > Settings.Ss_Limit) and "cloth"
--[[ changed < to <=, the following is the same, as not to get an error
when temp equals any of the _Limit .
]]
local summerwear = (temp <= Settings.Ss_Limit) and (temp > Settings.Vest_Limit) and "shirt and shorts"
local innerwear = (temp <= Settings.Vest_Limit) and (temp > Settings.Jacket_Limit) and "vest"
local southerwear = (temp <= Settings.Jacket_Limit) and (temp > Settings.Coat_Limit) and "jacket"
local outerwear = (temp <= Settings.Coat_Limit) and "coat"
--[[ added clothwear here, to produce proper output
when temp is greater than Ss_Limit
]]
return string.format("You%s need a %s", negation, (clothwear or summerwear or innerwear or southerwear or outerwear))
end
Вам нужно вручную вычислить логический тип в строку.
Попробуй это,
string.format("You%s need a %s", negation, tostring(clothwear or summerwear or innerwear or southerwear or outerwear))