julia constructores

Los constructores en Julia son funciones que se utilizan para crear objetos. Se utilizan específicamente para crear instancias de objetos de tipos compuestos. Un tipo compuesto es una colección de campos con nombre, que también se pueden tratar como valores únicos. Julia permite crear objetos de tipo como constructores cuando se asignan a un conjunto de valores de argumento pasados ​​en forma de función. Un constructor trabaja en la estructura de datos básica conocida como estructura o Tipos en Julia. Un tipo se crea con el uso de una palabra clave predefinida struct .

struct Structure_name
    Field1
    Field2
end

constructor1 = Structure_name(value1, value2)

constructor1.Field1
constructor1.Field2

Ejemplo:

# Creating a structure
struct Geeks
      
    # Defining Fields
    x
    y
end
  
# Creating a constructor
Geek_constructor = Geeks(10, 20)
  
# Creating constructor objects
Geek_constructor.x
Geek_constructor.y

Julia-Constructors-01

En el código anterior, cuando el constructor se crea con una función pasando valores de argumento, esos valores se instancian automáticamente en los campos de la estructura individualmente en el momento de la creación del objeto.

Tipos de constructores

Julia permite crear dos tipos de constructores en función de su comportamiento. Estos son:

  • constructor exterior
  • constructor interno

Constructor externo:
los métodos de constructor externo se definen fuera del bloque de declaración de tipo. Un constructor externo es como cualquier otra función en Julia, su funcionalidad depende de todos los métodos que se definen dentro de él. Se puede agregar una nueva funcionalidad a un constructor simplemente definiendo un nuevo método.
Ejemplo:

# Creating a structure
struct Geeks
    x
    y
end
  
# Creating a constructor with
# same value for both fields
Geek_constructor(x) = Geeks(x, x)
  
# Passing single argument
Geek_constructor(10)

Julia-Constructors-02
As in the above code, the constructor is created with one value and that single value is assigned to both the fields.
Hence, the constructor methods created like normal methods are called outer constructors. An outer constructor method can only create new instances by calling other constructors.

Constructor interno:
a diferencia del método de constructor externo en el que el constructor se puede definir en cualquier parte del código fuente como cualquier función normal, los constructores internos solo se pueden definir dentro del bloque de la declaración de tipo. Es como el método constructor externo, excepto que también puede acceder a una función predefinida especial denominada new . La definición de un constructor dentro del bloque de tipo restringirá la creación del objeto para que se vincule según la condición definida durante la creación del constructor.

Ejemplo:

# Defining type
struct Geeks
  
    # Field
    x::Real
      
    # Creating Inner Constructor
    Geeks(x) = typeof(x) != Int64 ? error("Integer value not found") : new(x)
end
  
# Object Creation
Geeks(10)
Geeks(10.5)

Julia-Constructors-03

Constructor paramétrico

Un tipo de constructor paramétrico es aquel en el que el tipo de datos de la estructura está predefinido en el momento de la declaración del tipo. Los campos de esta estructura están implícitos con un tipo de datos en el momento de la declaración de Tipo. En un constructor paramétrico, las llamadas al constructor en las que el tipo de parámetro se define explícitamente se convierten en tipos de campo implícitos. Por lo tanto, el tipo implícito en los parámetros en el momento de la llamada a la función debe coincidir; de lo contrario, se generará un error, pero cualquier par de valores con tipos coincidentes se puede pasar al constructor.

Ejemplo:

# Defining type
struct Geeks{T <: Real}
  
    # Fields
    x::T
    y::T
end
  
# Creating Outer constructor
Geeks(x::T, y::T) where {T<:Real} = Geeks{T}(x, y);
  
# Constructor calling
Geeks(10, 20)
Geeks(10, 20.5)

Julia-Constructors-04

Publicación traducida automáticamente

Artículo escrito por Abhinav96 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 *