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.
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)()
}
}
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.