2016-07-22 4 views
1

테이블에서 문자열 값을 확인하는 함수를 만들려고합니다.루아의 테이블에서 문자열 값을 확인하십시오.

나는 선언하면 같은 변수를

local table = "blue" 

내 기능 :

function check(color) 
    if color == "blue" then 
     return true 
    end 
return false 
end 

그것은 내가 check(table)를 사용하면 문제없이 작동하고 true을 반환하지만 변수는 문자열 값이있는 테이블이있을 때 :

local table = {"blue", "yellow", "red"} 

func

cannot convert a table to a clr type System.String

이 무슨 일이 일어 왜 어떤 생각이 어떻게 문제를 해결하기 위해 : 기 check(table) 그런 다음 내 기능이 작동하지 않습니다, 나는 오류가?

+0

, 당신은 table'이 내장 모듈 중 하나의 이름이며, 이미 포함 된 글로벌 변수'기억 할 수 있습니다 정렬을 위해'table.sort()'와 같이 테이블에 흥미로운 것을하는 함수의 테이블. 이러한 모듈이 여러 개 있으며 이러한 이름을 다시 사용하지 않는 것이 일반적입니다. 루아 5.3에서'coroutine','debug','io','math','os','package','string','table','utf8'입니다. – RBerteig

+0

@RBerteig 아, 예를 들어이 예제를 작성하기 위해 사전 정의 된 단어를 잊어 버렸습니다. 저에게주의를 주셔서 감사합니다. – Emuuung

답변

1

우선 평등을 확인하려면 = 대신 ==를 사용해야합니다. 다른 많은 프로그래밍 언어와 마찬가지로 대입 연산자와 ==는 논리 연산자 인 입니다. 테이블에 "blue"문자열이 있는지 확인하려면 테이블 자체가 아닌 "blue"와 요소를 비교해야합니다 !

여기에서하는 일은 양동이에 사과 또는 바나나가 있는지 확인하는 것과 같습니다. 그래서 버킷이 바나나처럼 보이는지 확인합니다.

이 시도 :

function check(colours) 
    for i,v in ipairs(colours) 

    if v == "blue" then 
     return true 
    end 

    end 

end 

귀하의 코드가 루아의 기초에 대한 지식이 매우 부족을 보여줍니다. 루아 참조 설명서와 루아의 무료 eBook 프로그래밍을 읽는 것이 좋습니다. 당신이 언어를 배울 계속 문제를 방지하기 위해

http://www.lua.org/manual/5.3/

https://www.lua.org/pil/

+0

필자는 오타가 있었음을 인정해야합니다. 그래도 기본 코드에 대한 지식이 없기 때문에 (필자는 코딩의 팬 일뿐입니다). tho에도 매뉴얼을 읽으려고했는데 완전히 이해하기가 어렵지만 대답 해 주셔서 감사합니다. 또 하나의 질문은, 함수가 테이블 또는 하나의 정의 된 변수로 작동한다는 것인가? – Emuuung

+0

제공 한 코드는 테이블의 첫 번째 요소 만 검사하고 "파란색"이면 true를 반환하고 그렇지 않으면 false를 반환합니다. 'return false'는 루프 뒤의 것이어야하고, 색상 검사의 else 부분이 아니어야합니다. – user6245072

+0

@Emuuung no, 테이블과 변수 모두에서 작동하지 않으므로 전달 된 변수가 테이블 또는 다른 유형의 값인지 확인하는 if-then-else 문을 사용해야합니다. – user6245072