Funciones en Rust

Las funciones son el bloque de código reutilizable que puede realizar acciones relacionadas similares. Ya has visto una de las funciones más importantes del lenguaje: la función principal, que es el punto de entrada de muchos programas. También ha visto la palabra clave «fn», que le permite declarar nuevas funciones. El código de Rust usa el formato de serpiente como el estilo convencional para los nombres de funciones y variables. En el caso de la serpiente, todas las letras están en minúsculas y subrayan palabras separadas.

Sintaxis:

fn functionname(arguments){
  code
}
  • Para crear una función necesitamos usar la palabra clave fn.
  • El nombre de la función se escribe después de la palabra clave fn
  • Los argumentos se pasan después del nombre de la función entre paréntesis
  • Puede escribir el código de función en el bloque de funciones

Ejemplo:

Veremos una función simple en el siguiente código.

Rust

fn main() {
    greet("kushwanthreddy");
}
  
fn greet(name: &str) {
    println!("hello {} welcome to geeksforgeeks",name);
}

Producción:

hello kushwanthreddy welcome to geeksforgeeks

En la declaración de función anterior, hemos escrito un programa de saludo que toma un argumento e imprime un mensaje de bienvenida. El parámetro que le hemos dado a la función de saludo es un nombre (tipo de datos de string). Utilizamos el siguiente enfoque:

  • La función principal tiene una función de saludo.
  • La función de saludo toma un nombre (string) como argumento
  • La función de saludo imprime el mensaje de bienvenida.

función en rust

Parámetros de función

En el ejemplo anterior, hemos utilizado la función sin ningún argumento, los argumentos son los parámetros que son variables especiales que forman parte de la firma de una función. Veamos el siguiente ejemplo que suma 2 números.

Rust

use std::io;
  
fn main() {
    println!("enter a number:");
    let mut stra = String::new();
    io::stdin()
        .read_line(&mut stra)
        .expect("failed to read input.");
    println!("enter b number:");
    let mut strb = String::new();
    io::stdin()
        .read_line(&mut strb)
        .expect("failed to read input.");
  
    let a: i32 =  stra.trim().parse().expect("invalid input");
    let b: i32 =  strb.trim().parse().expect("invalid input");
  
    sum(a,b);
}
  
fn sum(x: i32, y: i32) {
    println!("sum = {}", x+y);
}

Producción:

enter a number: 1
enter b number: 2

sum = 3

Como el programa de saludo anterior en el programa anterior, la función de suma en este programa también toma 2 argumentos que generalmente son números enteros y la salida es la suma de los números enteros dados en el argumento. Aquí usaremos el siguiente enfoque:

  • El programa pide entrada a
  • El programa pide la entrada b
  • El programa de suma se ejecuta mientras toma a, b como argumentos
  • El programa Sum imprime la suma de a, b

función con argumentos

Construyendo una calculadora simple en RUST

Construiremos una calculadora simple usando la función, los argumentos de la función y las declaraciones condicionales. Para ello utilizaremos el siguiente enfoque:

  • El programa pide el número a
  • El programa pide el número b
  • El programa le pide que elija qué hacer con los números, ya sea su suma, diferencia, producto o recordatorio.
  • De acuerdo con la entrada del usuario, el cálculo respectivo es la calculadora
  • La función sum calcula la suma
  • La función secundaria calcula la diferencia .
  • La función mul calcula el producto
  • La función quo averigua el cociente
  • La función rem encuentra el resto
  • Para un argumento no válido, el programa sale con un mensaje «no válido»

Rust

use std::io;
use std::process::exit;
  
fn main() {
    println!("enter a number:");
    let mut stra = String::new();
    io::stdin()
        .read_line(&mut stra)
        .expect("failed to read input.");
    println!("enter b number:");
    let mut strb = String::new();
    io::stdin()
        .read_line(&mut strb)
        .expect("failed to read input.");
  
    let a: i32 =  stra.trim().parse().expect("invalid input");
    let b: i32 =  strb.trim().parse().expect("invalid input");
      
      println!("choose your calculation: \n1.sum
             \n2.difference
             \n3.product
             \n4.quotient
             \n5.remainder\n");
               
      let mut choose = String::new();
    io::stdin()
        .read_line(&mut choose)
        .expect("failed to read input.");
    let c: i32 =  choose.trim().parse().expect("invalid input");
    
    // Select Operation using conditionals
      if c==1{sum(a,b);}
      else if c==2{sub(a,b);}
      else if c==3{mul(a,b);}
      else if c==4{quo(a,b);}
      else if c==5{rem(a,b);}
      else{println!("Invalid argument");exit(1);}
}
  
// Sum function
fn sum(x: i32, y: i32) {
    println!("sum = {}", x+y);
}
  
// Difference function
fn sub(x: i32, y: i32) {
    println!("difference = {}", x-y);
}
  
// Product function
fn mul(x: i32, y: i32) {
    println!("product = {}", x*y);
}
  
// Division function
fn quo(x: i32, y: i32) {
    println!("quotient = {}", x/y);
}
  
// Remainder function
fn rem(x: i32, y: i32) {
    println!("remainder = {}", x%y);
}

Producción:

enter a number:                                                    
2                                                                  
enter b number:                                                    
4                                                                  
choose your calculation:                                           
1.sum                                                              
2.difference                                                       
3.product                                                          
4.quotient                                                         
5.remainder                                                        
                                                                   
3                                                                  
product = 8

Publicación traducida automáticamente

Artículo escrito por kushwanthreddy y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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