2014-12-11 1 views
-1

두 가지 질문이 있습니다. 하나는 루아에서 반환되는 것입니까? 나는 인터넷에서 그것이 무엇을 의미 하는지를 찾고있다/의미하고 그 purpouse. 2.이 섹션을 코딩하는 데 문제가 있습니다.돌아 오는 결과 및 잘못하고있는 것 (루아)

testGrade={} 
testGrade.Joe = 86 
testGrade.Josh = 75 
testGrade.Jack = 12 
testGrade.Andrew = 0 
testGrade.Larry = 100 
testGrade.Noah = 94 
testGrade.Blakely = 67 

for k,v in pairs(testGrade) do 
    local maxGrade = 100 
    if testGrade[grade] == 100 then 
     Msg("Congratulations "..k..", you scored a "..v.." out of "..maxGrade.." getting every question right!\n"); 
    elseif testGrade[grade] >= 90 then 
     Msg("Congratulations "..k..", you scored a "..v.." out of "..maxGrade.." getting an A!\n"); 
    elseif testGrade[grade] >= 80 then 
     Msg(k..", you scored a "..v.." out of "..maxGrade.." getting a B.\n"); 
    elseif testGrade[grade] >= 70 then 
     Msg(k..", you scored a "..v.." out of "..maxGrade.." getting a C, try harder next time.\n"); 
    elseif testGrade[grade] >= 60 then 
     Msg(k..", you scored a "..v.." out of "..maxGrade.." getting a D, you need to study!\n"); 
    elseif testGrade[grade] == 0 then 
     Msg(k..", you scored a "..v.." out of "..maxGrade.." getting NOTHING right! Did you even try?!\n"); 
    else 
     Msg(k..", you scored a "..v.." out of "..maxGrade.." making you fail. You need to try harder and study!\n"); 
    end 
end 

연습 코딩을하려고했는데, 이것에 난처 해했습니다. 주석 달기는 매우 유용합니다;)

+0

함수에서 값을 반환합니다. [2.4.4 제어 구조] (http://www.lua.org/manual/5.1/manual.html#2.4.4)에서 : "return 문은 함수 나 청크에서 값을 반환하는 데 사용됩니다. 함수와 청크는 둘 이상의 값을 반환 할 수 있습니다. return 문은 함수 또는 청크 (함수)에서 값을 반환하는 데 사용됩니다. 함수 및 청크는 둘 이상의 값을 반환 할 수 있습니다. " –

+1

'testGrade [grade]'의 모든 대소 문자를'v'로 바꾸고 싶습니다. 당신은 다른 곳에서'k'와'v'를 사용하기 때문에 연결이 어디 있는지 모르겠습니다. –

+0

@Retired Ninja 아, 죄송합니다. 나는 그 부분을 잊어 버렸다. 이전에 사용했던 오래된 구식 코드를 사용하고 있었고 루프의 다른 전술을 배우기 전에 변수로 등급을 사용했습니다. 정말로 피곤한 atm와 그것을 발견하지 않았다. 나는 너무 혼란스러워했다. – laws16

답변

1

return은 함수에서 값을 반환합니다.

2.4.4 Control Structures에서 :

리턴 문장은 함수 또는 (단지 함수) 덩어리의 값을 반환하는 데 사용된다. 함수와 청크는 둘 이상의 값을 반환 할 수 있습니다. return 문은 함수 또는 청크 (함수)에서 값을 반환하는 데 사용됩니다. 함수와 청크는 하나 개 이상의 값을 반환 할 수 있습니다, 그래서 return 문을위한 구문은

합계 : 그렇게하지 않도록 = 반환 [explist]

당신은 여기에 기능이없는입니다 어디서나 return이 필요합니다.

testGrade[grade]을 사용하여 현재 학생의 학년을 얻으려고하고 있지만 grade에는 아무 값도 지정하지 않습니다. 아무데도 할당하지 마십시오.

루프의 k 값은 표의 키 (학생 이름)입니다.

루프의 v 값은 테이블의 키 값 (학생의 학년)입니다.

그래서 for student, grade in pairs(testGrade) dofor k,v in pairs(testGrade) do을 변경하고 단지 grade와 비교의 모든 testGrade[grade]를 교체하고 그것은 작동하고 grade으로 studentvk의 모든 사용을 교체하고 작동해야합니다.

최소 변경 사항은 (코멘트에 방금 추가 된 RetiredNinja처럼) testGrade[grade]v으로 바꿉니다.

+0

아, 고마워. 나는 그 부분을 잊어 버렸다. 이전에 사용했던 오래된 구식 코드를 사용하고 있었고 루프의 다른 전술을 배우기 전에 변수로 등급을 사용했습니다. 감사! – laws16

관련 문제