루아는 일반적으로 strongly-typed 언어이며 데이터 형식간에 암시 적 변환을 거의 제공하지 않습니다. 문자열과 숫자 사이의 자동 변환없이 Lua 컴파일
그러나, 숫자 및 문자열 automatically coerced in a few cases을받을 수 있나요 :루아는 실행 시간에 문자열과 숫자 값 사이의 자동 변환을 제공합니다. 문자열에 적용된 산술 연산은 루아 렉서의 규칙에 따라이 문자열을 숫자로 변환하려고 시도합니다. (캐릭터가 선행하고 공간 및 서명 후행 가질 수있다.) 이와 반대로, 다수
따라서 적당한 형식 문자열이 예상되는 경우, 번호가 문자열로 변환되어 사용될 때마다 :
local x,y,z = "3","8","11"
print(x+y,z) --> 11 11
print(x+y==z) --> false
print(x>z) --> true
나는 이것을 원하지 않습니다. 모든 자동 변환을 제거하기 위해 루아 인터프리터를 어떻게 재 컴파일 할 수 있습니까?
내가 가진 것을 선호 :
print(x+y) --> error: attempt to perform arithmetic on a string value
print(x>1) --> error: attempt to compare number with string
print(x..1) --> error: attempt to concatenate a number value
Doable이지만 상자에서 꺼내지는 마십시오. 루아의 내부를 편집해야합니다. http://www.lua.org/source/5.2/lvm.c.html#luaV_tonumber에서 시작하십시오. – lhf
당신은 다음과 같은 경우도 "수정"할 수 있습니다 :'print ("one =".. 1)' –
루아의 방언을 주류와 다르게 (그리고 조용히! – vonbrand