> Usual way to do this is with a newFoo proc.

I think this might be more versatile:
    
    
    type
      Foo = object
        bar: int
        value: float
    
    
    proc initFoo(bar = 42, val = 3.2): Foo =
      Foo(bar: bar, value: val)
    
    var foo1 = initFoo()
    var foo2 = initFoo(val = 9.9)
    var foo3 = initFoo(21, 17.34)
    
    echo foo1 # => (bar: 42, value: 3.2)
    echo foo2 # => (bar: 42, value: 9.9)
    echo foo3 # => (bar: 21, value: 17.34)
    
    
    Run

Reply via email to