Comment déclarer un champ nullable dans Nim?

Aug 25 2020

Le stock_symbolest facultatif, il n'existe que pour certaines entreprises, quelle serait la bonne façon de le déclarer dans Nim?

Dois-je utiliser refou y a-t-il un autre moyen?

type
  Company = object
    name:         string
    stock_symbol: string

echo Company(name: "Microsoft", stock_symbol: "MSFT")
echo Company(name: "Kinetic",   stock_symbol: nil)

Et question similaire pour le type composite, vous devez généralement connaître à la fois la bourse et le symbole

type
  SymbolWithExchange = object
    exchange: string
    symbol:   string

  Company2 = object
    name:         string
    stock_symbol: SymbolWithExchange

echo Company2(
  name:         "Microsoft", 
  stock_symbol: SymbolWithExchange("NYSE", "MSFT")
)
echo Company2(name: "Kinetic",   stock_symbol: nil)

Réponses

3 AlexCraft Aug 25 2020 at 04:38

On dirait que Option[T]devrait être utilisé

import options

type
  Company = object
    name:         string
    stock_symbol: Option[string]

echo Company(name: "Microsoft", stock_symbol: some("MSFT"))
echo Company(name: "Kinetic",   stock_symbol: none(string))

et

import options

type
  SymbolWithExchange = object
    exchange: string
    symbol:   string

  Company2 = object
    name:         string
    stock_symbol: Option[SymbolWithExchange]

echo Company2(
  name:         "Microsoft", 
  stock_symbol: some(SymbolWithExchange(exchange: "NYSE", symbol: "MSFT"))
)
echo Company2(name: "Kinetic",   stock_symbol: none(SymbolWithExchange))