Mi ultima subida fue de 18k y la proxima espero que tambien.
Alguien pls si sabe resolver mi duda que me de una pista... Mañana me lo miro.
#41477 ¿Para una relación? Si lo metes como JSON -> String, ¿como vas a realizar búsquedas sobre ese campo?
#41495 El código esta "bien" desde el punto de vista que "funciona" pero quiero evitar declarar una variable MUTABLE fuera de la SCOPE del while. Quiero hacerlo funcional e inmutable. Quiero un código "mejor".
Yo he hecho el código con una función tailrec. Mi duda es si en lenguajes modernos (kotlin, swift, scala(moderno...xd)) o llamemosles lenguajes más potentes lo puedo declarar de manera funcional. Por ejemplo se me ha ocurrido un generedador de valores lazy que voy llamando según la condición. Quiero evitar re inventar la rueda y evitar encapsular mi código en un objeto más complejo.
Se entiende?
Esta duda es un poco avanzada para el nivel medio del hilo, mejor será que los que haceis web os aparteis...
Edit 1: https://www.mediavida.com/foro/estudios-trabajo/tres-dudas-basicas-contrato-laboral-641827#1
tenia 2 horas de javascript y la profesora no ha venido... estará buscando tutoriales por youtube para entender algo
#41499 No te imaginas como me he reido en casa con la ultima frase.
A ver esto lo se hacer yo y todo el mundo xd. Y es lo que he implementado que cumple con mis requerimientos, ahora...
Quiero saber si en kotlin, scala etc. Existe una manera "idomatica" / "patron tipico" de hacer
funcion extreme = devuelve un numero random entre 0 y 10000
funcion main {
val resultado = extreme.minetras( v != 500)
}
La funcion extreme se ejecutaria mientras el valor que produzca no sea 500.
Ahora veo que quizás puedo hacer unas "extension function" para simularlo... Pero me sigue pareciendo raro que no haya una funcion predefinida.
Todo eso para que le estén explotando en su trabajo pagandole cuatro duros.
Mantente becario xdddddd
Haz una clase que extienda de Iterator y le vas dando los números según te los vaya pidiendo:
class ColorIterator(val start: CustomColor, val endInclusive: CustomColor) : Iterator<CustomColor> {
var initValue = start
override fun hasNext(): Boolean {
return initValue <= endInclusive
}
override fun next(): CustomColor {
return initValue++
}
}
#41503 No quiero un iterador, quiero un "generador" que solo genere 1 objeto y lo vaya cambiando.
La verdad es que no sé si me estas trolleando. Creo que la pregunta esta clara despues de los ejemplos... En caso que no seas troll, yo no tengo ninguna lista de elementos a iterar, yo quiero crear esta lista/objeto/Type y parar de crearla con una condición. Esto serían Sequences en kotlin por ejemplo, pero no es lo que busco.
#41504 El iterador funciona como generador, y el tiene la condición para dejar de generar elementos:
Por ejemplo, un generador de números del 0 al 10:
class NumberIterator() : Iterator<Int> {
var value = 0
override fun hasNext(): Boolean {
return value >= 10
}
override fun next(): Int {
value = value + 1
return value
}
}
#41496 Depende del motor puede que tengan el tipo JSON de manera nativa y tienen operaciones pensadas para ellos, por ejemplo http://www.postgresqltutorial.com/postgresql-json/
La idea no es que uses el JSON para buscar información dentro de él (aunque según el motor se pueda hacer), si no para guardar información inmutable.
Por ejemplo, en tu programa montas un grid de clientes a partir de un JSON, en tu BD te guardas esa información directamente como un JSON y cuando vayas a montar el grid accedes únicamente a ese campo "SELECT json_datos FROM clientes". Así reduces overhead en la BD porque solo pillas un campo y tiempo computacional en el programa.
Para vuestras casas/proyectos personales tenéis vuestro propio servidor de git o usáis uno como GitHub?
#41507 Siempre usaba bitbucket por lo de los repos privados gratis, ahora que GitHub los da también GitHub para todo
#41505 Si ahora lo he entendido, no acabé de entender tu mensaje y no miré el código xd.
Sigue sin ser lo que busco. Me lo voy a mirar ahora en más detalle igualmente. Para empezar es un patrón de oop que me gustaría evitar. Tercero has encapsulado el problema de la mutabilidad de tu variable resultado. No hace falta impementar iterador ya que nunca lo iteraré, pero capto la idea ya que lo voy a usar con un while. Lo positivo es que este "iterador" lo podré inicializar y esa variable será "correcta".
val iterator = Iterador.init()
while(iterator.isInvalid()) iterator.generate()
// tengo iterador en scope porque esta inicializado fuera del while. y es una referencia const.
No es lo que busco, el problema de la mutabilidad lo mantengo dentro del iterador... Aunque podría encapsular el objeto resultado y ya... Me parece una buena solución OOP, mejor que el do/while a pelo, pero no es la que busco.
Bueno, plantearé esta solución escondiendo todo dentro del "iterador" que propones haciéndolo privado, así solo harás Iterator.init(). Gracias es bueno tener todas las alternativas.
import random
def generator(f, min, max):
while True:
i = random.randint(min, max)
if i == f:
break
yield i
print([i for i in generator(5, 0, 10)])
#41510 Si esto son las sequencias/lazy que comentaba, es lo primero que he mirado, no me gustan porque me parece que solo "tapas" el problema, tienes mutabilidad. Es mas eficiente que la opción recursiva o la "iterator"?
Yo lo que buscaba es un one-line idiomatico de lenguajes "modernos".
Me haré un benchmark cutre a ver como escalan.
#41512 Bro ni es trabajo ni son deberes. Es un problema que se me ha ocurrido y me parece raro que no haya algo ya hecho para lo que busco.
Algo tan sencillo como ejecuta esta funcion mientras se cumpla una condición... Osea la función recursiva es toque pero que me hagan picarla y no este ya hecha en las librerias standards... xd De estos lenguajes que en teoria son modernos y toda la peshca.
#41509 También puedes hacer una mezcla, es decir, un generador que te de números (con un estado interno, randoms o que los saque de un API) y usar las extension functions que te da Kotlin sobre clases que implementen Iterator, como takeWhile que te permite definir fuera de esa clase cuando quieres dejar pedir números.
Lo fuerte de Kotlin (y de Scala) es que mezclas lo mejor de OOP con patrones funcionales, al fin y al cabo ese código es lo mismo que tener una función recursiva a la que le pasas el último valor generado para generar el siguiente, pero mucho más legible.