[Ironruby-core] More Interop Qs (Out, Ref and Structs)

Tomas Matousek Tomas.Matousek at microsoft.com
Wed Jun 10 01:19:14 EDT 2009


1), 2) ref/out params

C#: bool TryGetValue(string key, out int value)
Ruby call: result, value = dict.try_get_value('key')

I.e. arguments for out parameters are omitted, the values returned via out parameters are stored in an array returned by the method. The return value of the method is the first element of that array and is followed by out and ref parameter return values in the order in which they are declared. 

Another example:
bool Foo(string a, out string b, string c, ref string d, string e, out string f);

result, b_out, d_out, f_out = foo('a_in ', 'c_in ', 'd_in', 'e_in ')

3)

This is a bug. I have a fix for it, so it will work soon.
However, I'd strongly recommend not to use mutable structs. The struct data are copied when boxed/unboxed and it might not be obvious where this happens - for example if you pass a struct instance from Ruby to C# method that accepts it as a strongly typed parameter the struct get unboxed and its data are copied.

Tomas

> -----Original Message-----
> 1. out parameters:
> C#
> -----
> public class Class3 {
>   public void Test1(out string str) {
>     str = "From C#";
>   }
> }
>
> IronRuby
> ----------
> >> s = "a"
> => "a"
> >> Class3.new.Test1(s)
> :0: can't convert String into
> System::Runtime::CompilerServices::StrongBox[System::String] (TypeError)




> 2. ref parameters:
> C#
> -----
> public class Class3 {
>   public void Test2(ref string str) {
>     str = "From C#";
>   }
> }
>
> IronRuby
> ----------
> >>> s = "a"
> => "a"
> >>> Class3.new.Test2(s)
> => 'From C#'
> >>> s
> => "a"
>
> (This seems to work like your description to out parameters)
>
> 3. Structs
> C#
> ------
> public struct FullName {
>   public string FirstName;
>   public string LastName;
> }
>
> IronRuby
> -----------
> >>> my_struct = FullName.new
> :0: allocator undefined for Sample::FullName (TypeError)
>
> Let me know if you need more details.
>
> Many thanks,
> Shay
> ----------------------------
> Shay Friedman
> http://www.ironshay.com
> Follow me: http://twitter.com/ironshay
> --
> Posted via http://www.ruby-forum.com/.
> _______________________________________________
> Ironruby-core mailing list
> Ironruby-core at rubyforge.org
> http://rubyforge.org/mailman/listinfo/ironruby-core

_______________________________________________
Ironruby-core mailing list
Ironruby-core at rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core



More information about the Ironruby-core mailing list