xsharp.eu • the use of 'out' in a parameter list / situation
Page 1 of 2

the use of 'out' in a parameter list / situation

Posted: Fri Mar 24, 2017 4:49 pm
by Phil Hepburn
Hi guys,

Can anyone please suggest some X# syntax to show how to use the 'out' option in a parameter list.

I had a quick fumble around but with no good results.

End of day, brain hurts, nee my Forum colleagues ;-0)

Apparently Tuples can happily replace the use of 'OUT'.

HELP !!!

TIA,
Phil.

the use of 'out' in a parameter list / situation

Posted: Fri Mar 24, 2017 5:01 pm
by lumberjack
Phil,
Is that not REF?

Code: Select all

METHOD SyMethod(in AS STRING, out REF STRING)
Johan

the use of 'out' in a parameter list / situation

Posted: Fri Mar 24, 2017 5:01 pm
by Phil Hepburn
Hi again,

Having had another end of day fumble, I think I have a start, you know, my foot in the door!

Here are a couple of small images :-
Out_01.jpg
Out_01.jpg (23.68 KiB) Viewed 562 times
Out_02.jpg
Out_02.jpg (30.3 KiB) Viewed 562 times
I got success once I stopped trying to include 'as'.

Have a nice weekend,
Phil.

the use of 'out' in a parameter list / situation

Posted: Fri Mar 24, 2017 5:04 pm
by Phil Hepburn
Hi Johan,

I am not sure, I thought the REF idea was out of fashion a while back. These sorts of things are no much in my experience.

However, I do like the Tuple (sexy way) I will need to experiment.

I will feed back here if I get anything useful.

Regards,
Phil.

the use of 'out' in a parameter list / situation

Posted: Sun Mar 26, 2017 12:15 pm
by robert
Johan,

See https://www.xsharp.eu/help/parameters.html

Code: Select all


parameterList      : LPAREN (parameter (COMMA parameter)*)? RPAREN
                   ;
 
parameter          : (attributes)? SELF? identifier (ASSIGN_OP expression)? (parameterDeclMods datatype)?
                      | ELLIPSIS
                   ;
 
parameterDeclMods   : (AS | REF | OUT | IS | PARAMS) CONST?
                   ;
So AS, REF, OUT, IS and PARAMS are mutually exclusive.

Robert

the use of 'out' in a parameter list / situation

Posted: Sun Mar 26, 2017 3:30 pm
by lumberjack
Thanks Robert,

Sorry for any confusion, responded and then only checked the manual and did see OUT is recognized.

The same effect can be "simulated" with REF, provided you initialize the parameter before passing, which the OUT does not require. Both have its place.

REF: The parameter might be changed by the called method.
OUT: The parameter has to be set by the called method.

Regards,

Johan

the use of 'out' in a parameter list / situation

Posted: Mon Mar 27, 2017 10:19 am
by Phil Hepburn
An interesting short post Johan,

Thanks, I will now give these ideas a go in a test 'rig'.

Speak soon,
Phil.

the use of 'out' in a parameter list / situation

Posted: Mon Mar 27, 2017 11:10 am
by Frank Maraite
Hi Johan,
this
Johan Nel wrote:
REF: The parameter might be changed by the called method.
OUT: The parameter has to be set by the called method.
wasn't clear to me. Thanks!

Does this mean OUT parameters are always NULL at the beginning and should be tested !NULL before return?

Frank

the use of 'out' in a parameter list / situation

Posted: Mon Mar 27, 2017 11:27 am
by lumberjack
Hi Frank,
Frank Maraite wrote: this wasn't clear to me. Thanks!
Does this mean OUT parameters are always NULL at the beginning and should be tested !NULL before return?
No, it will raise an error during compilation that the parameter is not set.

Code: Select all

FUNCTION TestOut(h AS STRING, w OUT STRING) AS STRING
RETURN h + " " + w
error XS0177: The out parameter 'w' must be assigned to before control leaves the current method
Regards Johan

the use of 'out' in a parameter list / situation

Posted: Mon Mar 27, 2017 4:26 pm
by Phil Hepburn
Hi guys - Johan, Frank, and any others interested,

Attached are a couple of small images to help show the functionality etc.

OUT must change in the method code, and REF can change but does not have to. That's how it seems to me.

I suggest you try these out carefully for yourself before you use them, any guy who is not familiar with their use. Just so you know what is going on - check below :-
REfOut_01.jpg
REfOut_01.jpg (26.59 KiB) Viewed 564 times
REfOut_02.jpg
REfOut_02.jpg (42.4 KiB) Viewed 564 times
REfOut_03.jpg
REfOut_03.jpg (36.63 KiB) Viewed 564 times
RefOut_04.jpg
RefOut_04.jpg (42.49 KiB) Viewed 564 times
RefOut_05.jpg
RefOut_05.jpg (40.91 KiB) Viewed 564 times
Hope this interests a few of you ;-0)

Cheers,
Phil.