Mostrar Mensajes

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - chuidiang

Pages: [1] 2 3 ... 13
1
Android / MOVED: app
« on: Abril 05, 2018, 02:43:35 am »

3
Groovy / Forma cómoda de sumar con unidades
« on: Junio 02, 2017, 03:54:00 am »
En Groovy podemos hacer una clase Category de este tipo

Code: [Select]
class Converter {
    static Number getm (Number self) {
        self*1000
    }

    static Number getcm (Number self){
        self*10
    }

    static Number getdm (Number self){
        self*100
    }

    static Number getmm (Number self){
        self
    }
}

son métodos que dado un Number en mm, lo convierten a metros, centímetros, decímetros o milímetros. Una vez hecho, podemos usar código como este

Code: [Select]
        use(Converter) {
            println 1.m -2.cm +3.mm      // saca por pantalla 983
            println 1.2.m + 3.4.cm -3.2.mm  // saca por pantalla 1230.8
        }

Saca por pantalla el resultado en milímetros, correctamente convertidos cada uno de los sumandos.]


4
Groovy / Capturar llamadas a métodos que no existen con Groovy
« on: Mayo 19, 2017, 02:36:17 am »
En una clase Groovy podemos definir el método "def methodMissing(String name, args)". Cuando alguien llame a un método de esa clase que no exista, se llamará a este método.

Code: [Select]
class MyClass {
    def methodMissing(String name, args){
        println "${name}(${args}) doesn't exist  :("
    }
}

y la llamada

Code: [Select]
        MyClass myInstance = new MyClass();
        myInstance.someMethod("Some parameter", "Another Parameter")

saca por pantalla....

someMethod([Some parameter, Another Parameter]) doesn't exist  :(



5
Groovy / Añadir métodos a clase Java con Groovy
« on: Mayo 19, 2017, 02:32:47 am »
Groovy permite añadir métodos sobre la marcha, incluso a las clases java. El siguiente método añade un método que saca por pantalla el String

Code: [Select]
        // delegate es la instancia de la clase en cuestión, en este caso, del String.
        String.metaClass.print = { println delegate }

         // Saca Hello por pantalla
        "Hello".print()

6
Pyhton / Formato de strings
« on: Mayo 05, 2017, 02:39:28 am »
Algunos ejemplos de formato de strings de las distintas formas que permite python. Valor real con dos decimales.

Code: [Select]
# "formato" % valores
print ("Flotante con 2 decimales, diez cifras, espacios por delante %10.2f" % 12.34567)

# método str.format()
print ("Valor formateado {:10.2f}".format(12.34567))

# con cadena f".."
valor=12.3456
print ( f"El valor es {valor:10.2f}")

7
Groovy / Comparación de cadenas con Groovy
« on: Abril 29, 2017, 03:58:06 pm »
En Groovy se pueden comparar las cadenas con ==. El siguiente código devuelve que las cadenas son iguales

Code: [Select]
        String a = new String('hola')
        String b = new String('hola')

        assert a==b

mientras que el siguiente código java devuelve false

Code: [Select]
        String a = new String("hola");
        String b = new String("hola");

        System.out.println( a==b );

8
Groovy / Algo de sintaxis sobre los Map de Groovy
« on: Abril 18, 2017, 08:00:14 pm »
En groovy podemos definir un Map asi

Code: [Select]
def map = ['a':1, 'b':2]
si la clave es un String normal (sin caracteres especiales), podemos no poner las comillas

Code: [Select]
def map = [a:1, b:2]
Si tenemos una variable con un String y usamos esa variable entre paréntesis como clave, es el contenido de la variable (el String) el que será la clave

Code: [Select]
def variable = 'a'
def map = [(variable):1, b:2]   // Esto contendrá [a:1, b:2]

Podemos acceder poniendo la clave entre corchetes o incluso usando la notación de punto

Code: [Select]
println map['a']   // Aqui si es necesario las comillas
println map.a

Hay un método get() que permite indicar una clave y un valor por defecto. Si la clave no existe en el Map, se añade el valor por defecto al Map y se devuelve el mismo.

Code: [Select]
def map = [a:1, b:2]
println map.get('c',3)   // Devuelve 3 y añade c:3 al Map

Saludos.

9
Java JSE / Java 8 ofrece nueva forma de obtener números aleatorios.
« on: Abril 15, 2017, 06:40:41 pm »
En java 8, la clase java.util.Random tiene métodos ints() que permiten obtener un Stream de enteros aleatorios. El siguiente ejemplo muestra como obtener las tiradas de dados del 1 al 6

Code: [Select]
package com.chuidiang.examples;

import java.util.PrimitiveIterator;
import java.util.Random;
import java.util.stream.IntStream;

public class Java8RandomExample {
    public static void main(String[] args) {
        Random random = new Random();

        // IntStream for values between 1 and 6 both included
        // (from 1 to 7, with 7 excluded)
        final IntStream ints = random.ints(1, 7);

        // Iterator to get integers
        final PrimitiveIterator.OfInt iterator = ints.iterator();

        // Loop to print 10 integers.
        int counter=0;
        while (iterator.hasNext() && counter<10){
            System.out.println(iterator.next());
            counter++;
        }

        // Close de stream
        ints.close();
    }
}


10
¿Un cafecito? / C pierde posiciones?
« on: Abril 13, 2017, 07:04:34 pm »
Me llama la atención en el índice TIOBE de lenguajes de programación que C parece que está perdiendo posiciones a pasos agigantados https://www.tiobe.com/tiobe-index/

Sin embargo, aunque algunos lenguajes de los que ocupan las posiciones más bajas van subiendo.... no parecen justificar esta caída de C tan brusca. ¿Cual es el motivo entonces?

11
Groovy / Algunos ejemplos con RexExp en Groovy
« on: Abril 05, 2017, 04:27:22 am »
Unos ejemplillos de prueba con expresiones regulares en groovy

Code: [Select]
        // Contiene el patrón
        assert "abc" =~ /b/

        // Coincide exactamente con el patrón
        assert 'abc' ==~ /abc/
        assert ! ('abc' ==~ /b/ )

        // Empieza y acaba por la misma letra
        assert 'aba' ==~ /(.)b\1/
        assert ! ('abc' ==~ /(.)b\1/)

        // Extraer las coincidencias con el patrón
        def matcher = 'abc ebf' =~ /.b./
        matcher.each {
            println it
        }

        // extraer trozos del patrón que nos interesen
        matcher = 'abc ebf' =~ /(.)b(.)/
        matcher.each {
            println "In ${it[0]}, I found ${it[1]} and ${it[2]}"
        }

        // Definir el Patter primero.
        def pattern = ~/abc/
        assert ! pattern.matcher('b').matches()
        assert pattern.matcher('abc').matches()

        // switch case con patrones
        switch ('abc'){
            case ~/a/ :
                println "No"
                break;
            case ~/abc/:
                println "Yes"
                break;
            case ~/c/:
                println "No"
                break;
            default:
                println "Default"
        }
    }
}

12
Javascript / MOVED: Buscar en un JTable
« on: Julio 08, 2016, 06:53:20 pm »

13
Java JSE / MOVED: i18n
« on: Febrero 26, 2015, 04:38:48 am »

15
Java JSE / MOVED: Juego Ahorcado
« on: Julio 31, 2014, 04:02:47 pm »

Pages: [1] 2 3 ... 13
ey