Groovy

2010-07-16 35 views
8

için eval() eşdeğer python, programımda kullanıcı tarafından girilen kodu yürütmek için eval() yöntemini kullanabilirim. Groovy'de yapabileceğim benzer bir şey var mı? Kullanıcının yürütmek istediğim bir kod parçasına girdiği bir SWING UI metin kutusuna sahip olmak isterim?Groovy

sayesinde Hari

cevap

2

bu (ancak herhangi bir kodlama dilinde eval ile her zamanki gibi zararlı kod exeution konusunda dikkatli olun) deneyin:

evaluate("print new Date()") 
+0

bkz benim özel dilbilgisi kod küçük bir parça çalıştırmak çalışıyorum - kesinlikle kötü amaçlı kod kontrol edecektir . – Hari

4

izin verirdim

http://groovy.codehaus.org/api/groovy/util/Eval.html

böyle bir şey yapmak:) Eval sınıfını kullanmak muhtemelen Evet, Groovy'deki kodu Eval.x, Eval.xy, Eval.xyz veya Eval.me kullanarak dinamik olarak değerlendirmek mümkündür. Bu yöntemler hakkında daha fazla ayrıntı için bkz. the API doc.

Örneğin, böyle Eval.me kullanın:

Ayrıca
def a = "hello" 
def b = "world" 
Eval.me(""" println "$a $b" """) 
--> hello world 

, this blog post for some eval examples

+2

Kesinlikle "Eval.xy (a, b, 'println" $ x $ y "") demek istiyorsun? ;-) –

+0

Güzel yakalama, teşekkürler. Eval.x'ten Eval.me'ye değiştirildi. Eval.xy vs Eval.x kullanımı hakkında - bu bir tercih meselesi. Bu durumda bunlardan birini kullanabilirsiniz. Ayrıca, 'veya "" "kullanabilirsiniz. –