2012-04-16 26 views
9

bir fonksiyon parametresinde kod bloğunu değerlendirin nasıl başlık soruyu, ancak şu lua kodu dikkate almak: fonksiyonu berigerçekten emin değildi lua

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

Ama bu baskılar yalnızca işlev adresi,() bir kapatma döndürür. anonim işlevini değerlendirmek için bir yolu var mı? Gibi düzeni ben ek parantez içinde lambda kucaklamak nerede?

bildiğim Tabii
((lambda()(display "Hello World"))) 

, ben önceden işlevi tanımlayın ve daha sonra diyoruz, ama bu lua mümkün olup olmadığını sadece merak ettim başladı. Tüm cevaplar için şimdiden teşekkür ederiz.

cevap

14

Sen parantez içinde işlevi tanımı sarın ve daha sonra sonra () ekleyerek demen gerekiyor. Lua yorumlayıcısı bu koyarak: Bu istediğiniz global davranış ise

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

aşağıdaki çıktı üretmesi

> 12345678910 
+0

sayesinde ben de benzer bir fikri vardı ama parantez içinde işlevini sarılmış değil. biraz daha çirkin düzeni daha görünüyor, ama en azından çalışır: D – Moe

4

verir o geçirilen herhangi bir işlev değerlendirir, böylece basit çözüm baskı kanca olurdu o. Bu şekilde sadece lambdas olarak çağrı siteleri bırakabilir.

+0

Donanim olasılıkları, sadece lua öğreniyordu ve bunu yapabileceğini bilmiyordum. bunu aklımda tutacağım – Moe