2014-04-29 1 views
3

파이썬을 사용하여 문자열을 사전으로 재정의 할 수 있습니다.루아에서 변수 유형을 재정의

예 : 루아와

var = "testing" 
var = {'body': var} 
print var['body'] 
'testing' 

나는 같은 싶지. 문자열 개체를 테이블로 변환하려고합니다.

내 시도 :

> var = "testing" 
> var = {'body', var} 
> print(var) 
table: 0x12b2930 
> for i,j in pairs(var) do 
>> print(i) 
>> print(j) 
>> end 
1 
body 
2 
testing 
> 

위의 예와 내가 코드 위

> print(var[2]) 
testing 
> 

내 요구 사항을 충족하지 않습니다와 함께 테스트 문자열을 가져올 수 있습니다. 'testing' 값을 "body" 키와 함께 저장하고 싶습니다.
나는 다음과 같은 가져 오기하려면 :

print(var['body']) 
'testing' 

테이블 건설이

+0

입니다. 그 라인을 순차적으로 실행 시키면 프린트의 출력으로''testing''을하지 않습니다. (테이블에 내장 된 루아'print' 함수가 아닌) 예쁜 테이블을 가지고 있다면'' ''body ':'testing '}'을 얻을 수 있습니다. –

+0

@EtanReisner 그 죄송합니다. 지금 편집되었습니다 –

답변

6
var = "testing" 
var = {body = var} 
print(var.body) 
print(var["body"]) 

쉼표에 제발 도와주세요 테이블 항목을 분리합니다. 따라서 {"body", "testing"}을 지정하면 순차 배열을 초기화하는 방법이므로 키 1과 2가 각각 "본문"과 "테스트"와 동일한 두 개의 항목이 만들어집니다.

각 값에 임의의 키를 할당하려면 {key1 = "body", key2 = "testing"}에서와 같이 =을 사용해야합니다. 이제 두 가지 방법으로 해당 요소에 액세스 할 수 있습니다.

tab1["key1"] :

tab1.key1

그리고 하나는 대괄호를 사용하여, 같은 배열 /지도입니다 : 하나는 점을 이용하여 같은 객체이다.

두 번째 예에서는 따옴표에주의해야합니다. 큰 따옴표를 사용하면 키에 직접 액세스합니다. 그렇지 않은 경우 (tab1[key1]) 키 지정자로 key1 변수에 저장된 값을 사용하고 있습니다.

+0

잘 설명해 주셔서 고맙습니다 :) –

3

파이썬 코드에 가장 가까운 루아 코드는 예를 들어 파이썬 조각이 잘못되었다고

var = "testing" 
var = {['body'] = var} 
print(var['body'])