로컬 함수를 사용하여 함수를 작성하려고합니다. main 함수는 외부 소스로부터 출력을 받고 함수는 그 입력을 변환하고 나중에 사용하기 위해 결과를 반환해야합니다. 내 문제는 내가 현재 시도하고있는 방식인데, 메인 함수 내 첫 번째 로컬 함수를 넣으려고 할 때 나는 계속 nil
을 얻는다.Lua : 중첩 된 함수를 올바르게 작성하는 방법
function stats(input)
height, weight, name, age, gender, relate = string.match(input, "(%d*)ft,(%d*)lbs,(%w*),(%d*),(%u*),(%u)")
if name then
function nameInit(relate)
relateTable = {["F"] = "Friend", ["R"] = "Relative"}
for k,v in pairs (relateTable) do
if relate == k then
relship = v
return relship
end
end
end
end
person = name.." is "..age.." years old, weighs "..weight.." and blah blah blah....
return person
end
print (stats("5.8ft, 160lbs, Mike Scott, 19, M, F"))
물론,이 주제는 실제가 아니라 내가 할 노력하고있어하는 최종 응답의 측면에서 같은 라인을 따라입니다 예를 들면 다음과 같습니다. 현재 lua: filename: attempt to concatenate global 'relship' (a nil value)
을 받고 있습니까? 내포 된 기능없이 원하는 응답을 얻을 수 있습니다. 그러나 내가 받고자하는 응답에 대해 더 자세히 설명하려고 할 때, 그 기능을 전지구 함수 안에두면, 나는이 응답을 받기 시작합니다. 이것은 다른 기능 내에서 기능을 사용하려고 할 때마다 내 문제인 것처럼 보입니다. 두 개의 분리 된 전역 함수를 만들 수 있고 그 중 하나에서 결과를 인쇄 할 수 있습니다. 그러나 내가 다른 것을 사용하려고 할 때, 나는 나 자신을 망쳤습니다. 초보자가 잘못하고있는 것을 더 잘 이해할 수 있도록 시간을 할애 할 수있는 사람이라면 누구나 훌륭 할 것입니다! 모두에게 감사드립니다.
여기서'nameInit'을 (를) 호출하고 있습니까? 당신은 여기서 그것을 정의하고있을뿐입니다. –
또한,'stats (input)'을 string.match를 사용하는 대신에'stats (ht, wt, name, age, gender, relate)'로 변경하면 안됩니다. – Josh
@ColonelThirtyTwo와 함께하면 코드 스 니펫의 어느 곳에서나'relship '을 연결하지 않으므로 오류를 생성 할 수 없다고 말했습니다. 도움을 받으려면보다 정확하고 완전한 코드 목록을 제공해야합니다. (일반적인 팁으로 모든 곳에서 전역 변수를 사용하는 대신 함수를 포함하여 지역 변수를 사용하기를 원합니다.) –