Reposición de inventario en Visual Basic
Un programa completo: filtrar stock bajo, ponerle precio al pedido, totalizarlo.
' Marca los artículos de bodega que van bajos y cotiza el resurtido.
Module InventoryReorder
Structure Item
Public Name As String
Public OnHand As Integer
Public Minimum As Integer
Public UnitCost As Double
End Structure
Sub Main()
Dim shelf = {
New Item With {.Name = "bolts", .OnHand = 40,
.Minimum = 100, .UnitCost = 0.08},
New Item With {.Name = "hinges", .OnHand = 220,
.Minimum = 80, .UnitCost = 1.15},
New Item With {.Name = "handles", .OnHand = 12,
.Minimum = 50, .UnitCost = 2.4}
}
Dim orders = shelf.
Where(Function(i) i.OnHand < i.Minimum).
Select(Function(i) New With {
.Name = i.Name,
.Units = i.Minimum * 2 - i.OnHand,
.Cost = .Units * i.UnitCost
}).ToList()
For Each order In orders
Console.WriteLine(
$"{order.Name,-10}{order.Units,5} {order.Cost,8:F2}")
Next
Console.WriteLine($"total: {orders.Sum(Function(o) o.Cost):F2}")
End Sub
End Module
Cómo funciona
- Un literal de arreglo de
New Item With {...}puebla el almacén. - El
.Costdel tipo anónimo reutiliza su propio miembro.Units. Sumcon una lambda totaliza el pedido en una sola llamada.
Palabras clave y builtins usados aquí
DimDoubleEachEndForIntegerModuleNewNextPublicSelectStringStructureSubWith
El intento, en números
- Líneas
- 35
- Caracteres a escribir
- 864
- Tokens
- 205
- Ritmo de tres estrellas
- 75 tpm
Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 164 segundos.
Paso 2 de 2 en Bis; paso 29 de 29 en Fundamentos del lenguaje.