Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: PATCH: += parameter assignments



On Dec 17, 12:28pm, Oliver Kiddle wrote:
} Subject: Re: PATCH: += parameter assignments
}
} Borsenkow Andrej wrote:
} > 
} > > One possible extension beyond what ksh does would be to also add a -=
} > > assignment. It could be made to prepend to string and array values
} 
} > I would prefer += and =+ but that probably breaks ksh93 compatibility.
} 
} This issue wouldn't be ksh93 compatibility so much as backward
} compatibility with old zsh scripts or any other scripts.

Sorry not to have followed up on this one sooner, but it came along as I
was getting ready for winter holidays and I didn't have time.

I'm not entirely happy with the addition of the a+=val syntax because it
conflicts (conceptually, not mechanically) with the += operator that is
already present in the math syntax.  Consider that the following:

    integer i=4
    typeset s=4
    i+=5
    s+=5
    ((i+=5))
    ((s+=5))
    print $i $s

yields

    14 50
    
However, what I consider to be worse is that:

    s=four
    ((s+=5))
    s+=5
    print $s

yields

    55

Interpreting strings as integers in math context makes some sort of sense,
but doing both that, and also overloading += depending on the parameter
type, is going too far.  I think the suggested change for -= would be even
more confusing.

And the following can't be anything but a bug:

    s=4four
    ((s+=5))
    s+=5
    print $s

yeilds

    zsh: bad math expression: operator expected at `four'
    65

(Previously

    s=4four
    ((s+=5))
    print $s

gave

    zsh: bad math expression: operator expected at `four'
    4four

but now it somehow reassigns s as 6.)

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   



Messages sorted by: Reverse Date, Date, Thread, Author