Skip to content

Latest commit

 

History

History
165 lines (120 loc) · 3.79 KB

M0_U2_1.md

File metadata and controls

165 lines (120 loc) · 3.79 KB

¿Cómo utilizar Scala?

Objetivos de la unidad de aprendizaje:

  • Definir y explicar el lenguaje de programación Scala
  • Referenciar varias formas de instalar Scala
  • Utilizar el REPL
  • Utilizar el sbt para manejar un proyecto
  • Definir y explicar que son funciones puras

¿Qué es Scala?

Scala fue creado por Martin Odersky 1

  • Lenguaje de programación de múltiples paradigmas
  • Imperativo (POO)
  • Funcional
  • Es un lenguaje escalable 1
  • Escribir pequeños guiones (Scripts)
  • Construir grandes sistemas
  • Estáticamente tipeado
  • Corre sobre Java y JavaScript

Instalación de Scala


Utilizar el REPL

  • REPL (Read Evaluate Print Loop)
  • Probar interactivamente el programa
  • REPL de Scala es scala
$ scala
Welcome to Scala 2.13.3 (OpenJDK 64-Bit Server VM, Java 11.0.9).
Type in expressions for evaluation. Or try :help.

scala>

Utilizar el REPL

  • Evaluar expresiones
  • Definir funciones
  • Convención nombres:
    • Tipos (Mayúsculas)
    • Funciones, métodos y procedimientos (Minúsculas)
def <nombre> (<lista_argumentos>):[<tipo>] = { <cuerpo> }

Utilizar el REPL

Algunos comandos

  • <ctrl-d> - Terminar
  • :quit o :q - Terminar
  • :help - Ayuda
  • :save - Guardar
  • :load - Cargar
  • :paste - Cargar

Utilizar manejador de proyectos (sbt)

Vamos a implementar un problema conocido:

Problema

Se leen tres números enteros, cada uno representa la longitud de un cable, que posiblemente son diferentes. Se quiere cortar los cables de forma tal que todos los segmentos sean iguales.

Implementación

  • Vamos a crear un objeto que el punto de entrada Main
  • Vamos a dividir nuestro problema:
    • Parte impura que trata con el mundo exterior readThreeSeg
    • Parte pura que resuelve el problema de gcd
    • Parte pura que resuelve convertir string to int strToInts
    • Punto de entrada que utiliza estas funciones

Utilizar sbt para manejo de proyectos

$ mkdir cutthrseg
$ cd cutthrseg
$ touch build.sbt

Utilizar sbt para manejo de proyectos

  • sbt utiliza un modelo de proyectos POM
  • Esta estructura rígida permite manejar cualquier proyecto
  • Permite añadir fácilmente nuevos componentes
  • Es base para para manejar subproyectos asociados

Utilizar sbt para manejo de proyectos

├── build.sbt
├── project
│   └── build.properties
└── src
    ├── main
    │   └── scala
    │       └── co
    │           └── s4n
    │               └── cutthrseg
    │                   └── Main.scala
    └── test
        └── scala
            └── co
                └── s4n
                    └── cutthrseg

Utilizar sbt para manejo de proyectos

  • Ahora vamos a poblar nuestro proyecto
    • Creemos la jerarquía de proyectos
    • Utilizando un editor o IDE añadir Main.scala
$ mkdir --parents src/main/scala/co/s4n/cutthrseg
$ cp ../functions.scala src/main/scala/co/s4n/cutthrseg/Main.scala
$ <editor> src/main/scala/co/s4n/cutthrseg/Main.scala

Utilizar sbt para manejo de proyectos

  • Escribir el objeto Main
  • Recordar la jerarquía correspondiente package co.s4n.cutthrseg
  • Y utilizar sbt para el manejo del proyecto:
    • compilar
    • correr
    • pruebas y otros (lo veremos después)

Footnotes

  1. [@odersky:scala_3] 2