2012-12-13 5 views
2

나는 T와 V라고 불리는 테이블에서 일부 작업을 수행하는 상황이 있습니다. metatable을 올바르게 설정했고 모든 것이 예상대로 작동합니다. 문제는 내가 보통 계산 결과가 필요 없다는 것입니다. 그래서 그 대신 글을 쓰는루아 던지기 결과

for i=1,5 do 
    _=T+V 
end 

for i=1,5 do 
    T+V 
end 

을하는 방법은 무엇입니까?

저는 Lua 명령 줄을 사용하지 않으므로 = T + V로만 작성할 수 없습니다.

+1

결과가 필요하지 않은 곳에 계산을 수행하는 이유는 무엇입니까? – Puppy

+1

@DeadMG 두 번째 데이터에서 전달 된 첫 번째 테이블을 수정하기 위해 테이블에 + 연산자를 오버로드하지 않아도되는 이유는 없습니다. 매우 직관적으로 보이지는 않지만 말입니다. –

+1

실제로 루아 스타일 멤버 함수를위한 장소이지 연산자 오버로드가 아닙니다. – Puppy

답변

3

보시려면 syntax of Lua in extended BNF 등호가없는 표현식 (exp)을 만드는 방법은 없습니다.

식 (EXP)가 사용될 수있는 단지 4 개의 경우가 있습니다

  • 예컨대 값을 할당이 p = exp

  • 조건 함수 호출 즉, 색인에 대한 f(exp)

  • 에서

  • while exp thent[exp]

+0

색인 생성에 여전히 할당이 필요합니다. – daurnimator

+0

@daurnimator가 반드시 필요하지는 않습니다.f (t [exp]) 또는 t [exp]이면. – JustMaximumPower

+0

. 하지만 요점은이 목록에서 일할 다른 것이 필요하다는 것입니다. – daurnimator

6

아무것도하지 않는 기능을 확인하고 그것을 전달할 :

function NOP() end 

for i=1,5 do 
    NOP(T+V) 
end 

이 추가로 제공 당신의 의도를 문서화하고, 그 부작용은 당신이 겪은 결과입니다.

+1

예쁜 매끄러운, 너무 간단 나는 그것을 생각하지 않았을 믿을 수 없어! –

+0

@MikeCorcoran 필자는 그것을 생각했지만 아무런 이유없이 함수 호출의 오버 헤드를 추가하는 것은 낭비였습니다 ('_ = 0'은'NOP (0)'의 두 배 정도). 실제로 우리는 오버 헤드에서 1 마이크로 초의 분수를 말하는 것이므로 가장 잘 읽는 것이 무엇이든간에 의미가 있습니다. – Mud