2012-04-16 3 views
9

에서 함수 매개 변수에 코드 블록을 평가하는 방법을 제목 질문을하지만, 다음 루아 코드 고려해야 할 기능 이후정말 확실하지 않았다 루아

print(function() 
    s = "" 
    for i = 1, 10 do 
     s = s..tostring(i) 
    end 
    return s 
    end) 

을하지만 인쇄 기능 만 주소를() 클로저를 반환합니다. 익명의 기능을 평가할 수있는 방법이 있습니까? 내가 괄호 안에 람다를 받아 들일 수있는 계획 에서처럼?

내가 아는 물론
((lambda()(display "Hello World"))) 

, 나는 미리 함수를 정의하고 나중에 부르지 만,이 루아에서 가능하면 난 그냥 궁금 수 있습니다. 모든 답장에 미리 감사드립니다.

답변

14

괄호 안에 함수 정의를 래핑 한 후 ()을 추가하여 호출해야합니다. 루아 인터프리터이 퍼팅이 원하는 글로벌 행동 경우

> print((function() 
    s="" 
    for i=1,10 do 
     s=s..tostring(i) 
    end 
    return s 
    end)()) 

하면 다음과 같은 출력을

> 12345678910 
+0

감사합니다. 비슷한 생각을했지만 대괄호로 묶은 것이 아닙니다. 계획보다 약간 못 생겼지 만, 적어도 작동합니다 : D – Moe

4

을 제공가 전달 된 모든 기능을 평가 있도록 간단한 솔루션은 인쇄 후크하는 것 그것. 그렇게하면 전화 사이트를 람다 (lambdas)로 남겨 둘 수 있습니다.

+0

interessting possiblity, 나는 루아를 배우고 있었고, 당신이 그것을 할 수 있는지 몰랐습니다. 나는 그것을 명심 할 것이다. – Moe