Git

Creación de un repositiorio

git init GitInPracticeRedux

Los cambios efectuados en un archivo se añaden al índice mediante git add nombre_archivo . Se pueden añadir directorios completos, por ejemplo, git add . Cada nuevo cambio hecho a este archivo requiere repetir git add nombre_archivo, es decir, en cada momento se tiene la versión añadida.

Mediante git commit -m "Mensaje.." se incluye el índice en el almacen de objetos. Es preferible hacer commits con cambios pequeños en lugar de que el commit incluya cambios variados sin relación entre ellos. De esta forma el mensaje es descriptivo del cambio hecho.

Compartir este artículo:
  • Imprimir
  • Digg
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Yahoo! Buzz
  • Twitter
  • Google Bookmarks

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Lecciones de Scala

Los ejemplos se añadirán en este objeto

 
object Leccion1 {

 def ejemplo1 = println ("Ejemplo 1 ")

 val ejemplo2:()=>Unit=()=> println ("Ejemplo 2")

def main(args: Array[String]): Unit = {

val listaDescripciones= Array(
 "Función definida a partir de un método",
 "Función anónima almacenada en una variable")

// ejemplo1 es un método que se usa para definir una función _ => ejemplo1
// se puede definir dicha función con la sintáxis ejemplo1 _
// ejemplo2 es un nombre dado a una función anónima del tipo () => Unit
// no compila val listaFunciones=Array(ejemplo1 , ejemplo2)

val listaFunciones=Array(
  ejemplo1 _,
  ejemplo2)

val listaPares:Array[(String,()=>Unit )] = listaDescripciones zip listaFunciones

val numFunciones = listaPares.length

println ("Introduce un número de 1 a "+ numFunciones .toString)
val indice = readInt
println
println(listaPares(indice-1)._1)
(listaPares(indice-1)._2)()

// también listaFunciones(indice-1)()
}

}
Compartir este artículo:
  • Imprimir
  • Digg
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Yahoo! Buzz
  • Twitter
  • Google Bookmarks

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Retorno a C++11

Preámbulo

Las páginas del blog que traten sobre C++ se van a centrar, sobre todo, en refrescar la sintáxis del lenguaje y las características que son específicas de C++,  haciendo el mayor uso posible de los nuevos elementos que se han introducido con C++11, en especial lo que pueda ser utilizado en el uso en C++ de la programación funcional.

Otros centros de interés son STL y la implementación de algoritmos.

 

Selección del ejemplo a ejecutar

main.cpp
El usuario elige el índice de la función que desea ejecutar. Las funciones se definen  en otros archivos del proyecto, por ejemplo Leccion1.cpp , y   se incluyen en un vector,  definido usando una lista de inicialización. Se ha definido un tipo tipofuncion: puntero a función sin argumentos que devuelve un entero

#include <iostream>
#include "Leccion1.h"
#include <vector>

int main(int argc, const char * argv[])
{
    typedef int (*tipofuncion)();

    std::vector<tipofuncion> funciones={ejemplo1, ejemplo2};

    std::string numero_funciones=std::to_string(funciones.size());

    std::cout << "Índice de la función , 1 a "+  numero_funciones<<std::endl; 

    int indice=0;

    std::cin >> indice;

    tipofuncion funcion=funciones[indice-1];

    funcion();

   // también es correcto  funciones[indice-1]();

}

El archivo
Leccion1.cpp
contiene la definición de las funciones. El contenido de este archivo puede ir cambiando a medida que se añadan nuevas funciones.

Compartir este artículo:
  • Imprimir
  • Digg
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Yahoo! Buzz
  • Twitter
  • Google Bookmarks