У меня есть переменный в FSharp интерактивныеFSharp интерактивные фу
val toto : obj = [["NKY INDEX"]]
(я получил это значение от вызова к обычной библиотеке Dotnet, прототипом которой говорит мне, что это возвращает OBJ)
I хотел бы получить доступ к значению внутри него, но я точно не знаю тип. Поэтому я стараюсь, чтобы отразить на нем:
>toto.GetType();;
val it : Type =
System.Object[,]
{Assembly = mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;
AssemblyQualifiedName = "System.Object[,], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
Attributes = AutoLayout, AnsiClass, Class, Public, Sealed, Serializable;
BaseType = System.Array;
ContainsGenericParameters = false;
CustomAttributes = seq [[System.SerializableAttribute()]];
DeclaredConstructors = [|Void .ctor(Int32, Int32);
Void .ctor(Int32, Int32, Int32, Int32)|];
DeclaredEvents = [||];
DeclaredFields = [||];
DeclaredMembers = [|Void Set(Int32, Int32, System.Object);
System.Object& Address(Int32, Int32);
System.Object Get(Int32, Int32);
Void .ctor(Int32, Int32);
Void .ctor(Int32, Int32, Int32, Int32)|];
DeclaredMethods = [|Void Set(Int32, Int32, System.Object);
System.Object& Address(Int32, Int32);
System.Object Get(Int32, Int32)|];
DeclaredNestedTypes = seq [];
DeclaredProperties = [||];
Он имеет Get метод, однако, когда я пытаюсь получить элемент, я получаю сообщение об ошибке.
>toto.Get(0,0);;
toto.Get(0,0);;
-----^^^
error FS0039: The field, constructor or member 'Get' is not defined
Каков правильный способ извлечения внутреннего элемента?
PS:. Литье это заранее дает тот же
>(toto :?> System.Object[,]).Get(0,0);;
(toto :?> System.Object[,]).Get(0,0);;
----------------------------^^^
error FS0039: The field, constructor or member 'Get' is not defined
же для [0, 0]
> toto.[0, 0];;
toto.[0, 0];;
^^^^^^^^^^^
error FS0039: The field, constructor or member 'Item' is not defined
Выражение 'toto: obj = [[" "]]' не должно даже компилироваться. – JaredPar
Это неудачное следствие того, что список списков и многомерных массивов печатается аналогичным образом в FSI – desco
@ JaredPar Я не упомянул, поскольку я думал, что отображаемая информация была достаточной, я получаю это значение от вызова функции dotnet. чей тип возврата, во всей красе, является объектом .... – nicolas