Programming => Bugs & Feature Requests => Topic started by: kryton9 on July 10, 2011, 12:06:04 PM
Title: optional parameter does not kick in
Post by: kryton9 on July 10, 2011, 12:06:04 PM
I have noticed before, but many times by enclosing in () solved it. But here is an example where it doesn't kick in Charles.
Code: OxygenBasic
'optional parameters behaviour
function power( sys number, optional sys exponent = 2 )
returnpow( number, exponent )
endfunction
printstr( power 2 ) 'the optional parameter does not kick in
printstr( pow( 2, 4) )
printstr( power 2, 4 )
printstr( 2^4 )
Title: Re: optional parameter does not kick in
Post by: Peter on July 10, 2011, 01:29:26 PM
Hi Kent,
There is no OPTIONAL!
Title: Re: optional parameter does not kick in
Post by: Charles Pegge on July 10, 2011, 02:40:24 PM
Optional parameters and named parameters are two different paradigms
These use named params
Code: OxygenBasic
'named parameters behaviour
function power( sys number=2, sys exponent = 2 ) asdouble
returnpow( number, exponent )
endfunction
printstr power ()
printstr power (4, 2)
printstr power (exponent=5)
and these use optional params (which always default to null)
Code: OxygenBasic
'optional parameters behaviour
function power( optional sys number, exponent ) asdouble
if number=0 then number=1
if exponent=0 then exponent=1
returnpow( number, exponent )
endfunction
printstr power ()
printstr power (4)
printstr power (4,3)
Charles
Title: Re: optional parameter does not kick in
Post by: Charles Pegge on July 10, 2011, 03:46:34 PM
Another Oxygen.dll fix. print was giving chinese characters instead of numbers under certain conditions. No need for str ..
Code: OxygenBasic
'optional parameters behaviour
function power( optional sys number, exponent ) asdouble
if number=0 then number=1
if exponent=0 then exponent=1
returnpow( number, exponent )
endfunction
print power ()
print power (4)
print power (4,3)
Charles
[attachment deleted by admin]
Title: Re: optional parameter does not kick in
Post by: kryton9 on July 10, 2011, 06:10:34 PM
That is very helpful Charles. Thanks for the nice explanation. I like using optional parameters a lot, now it makes sense that it would check against NULL or 0 then assign what it is needed.
Title: Re: optional parameter does not kick in
Post by: Charles Pegge on July 10, 2011, 09:46:32 PM
Here is another example Kent. Using optional parameters passed by reference. In these cases you need to check each address for null.
if @number=0 then n=2 else n=number
Code: OxygenBasic
'optional parameters behaviour
'USING OPTIONAL PARAMETERS BY REFERENCE
function power( optional sys *number, *exponent ) asdouble
sys n,e
if @number=0 then n=2 else n=number
if @exponent=0 then e=2 else e=exponent
returnpow( n, e )
endfunction
print power ()
print power (4)
print power (4,3)
Charles
Title: Re: optional parameter does not kick in
Post by: kryton9 on July 10, 2011, 10:26:40 PM
Thanks Charles. Very handy information. As I go back through my class files I will update all of them as I have ConsoleC.inc to work correctly with optional parameters.