tutorial traduccion peliculas descargar app groovy

peliculas - groovy traduccion



InterpolaciĆ³n de cadena Groovy con valor solo conocido en tiempo de ejecuciĆ³n (1)

Podría usar un cierre:

class MyClass { def greeting = { name -> "Hello, ${name}!" } MyClass() { } void sayHello(name) { println greeting(name) } }

Siento que me falta algo con la forma en que Groovy maneja cadenas. Me doy cuenta de que son inmutables, pero lo que me gustaría hacer es interpolar un valor en tiempo de ejecución. No puedo entender cómo. Permítanme dar un ejemplo realmente simple en Python (como "pseudocódigo ejecutable") para ilustrar lo que quiero decir. Luego daré lo que probé en Groovy.

Pitón

# string_sample.py class MyClass(object): greeting = ''Hello, %s!'' def __init__(self): object.__init__(self) def sayHello(self, name): print self.greeting % name if __name__ == ''__main__'': m = MyClass() m.sayHello(''Mario'')

Las impresiones de arriba: ¡Hola, Mario!

Groovy

// string_sample.groovy class MyClass { def greeting = "Hello, ${name}!" MyClass() { } void sayHello(name) { println greeting } } m = new MyClass() m.sayHello(''Mario'')

La secuencia de comandos Groovy anterior se queja de que el name es desconocido:

Caught: groovy.lang.MissingPropertyException: No such property: name for class: MyClass

Entiendo lo que está pasando y por qué. No estoy seguro de qué hacer al respecto. Me doy cuenta de que String.format se puede usar, lo cual no es tan malo:

String greeting = "Hello, %s!" // Omitted... void sayHello(name) { println String.format(greeting, name) }

Solo estoy pensando que quizás haya una forma más flexible de hacerlo. ¿Nadie sabe? ¡Gracias!