Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pass `out` parameter (as reference) in F#

I want to call System.Uri.TryCreate():

let uriResult: System.Uri = ref (* what's here? *);
System.Uri.TryCreate(uriName, UriKind.Absolute, uriResult)

As I've learned here, one has to pass a F# reference for .NET out parameters.

But how can I initialize my reference uriResult in my case?

I've tried creating a new, empty Uri object.

let uriResult: System.Uri = ref (new System.Uri());

Error 1
This expression was expected to have type
     Uri
but here has type
    'a ref

like image 645
ComFreek Avatar asked Jul 15 '13 15:07

ComFreek


1 Answers

As explained in Parameters and Arguments on MSDN (see Passing by Reference), out parameters are automatically tuplized, so you can do this:

match System.Uri.TryCreate(uriName, UriKind.Absolute) with
| true, uriResult -> //OK
| _ -> //not a Uri
like image 84
Daniel Avatar answered Nov 03 '22 10:11

Daniel