Так работает:
using Nemerle.Collections;
using Nemerle.Text;
using Nemerle.Utility;
using System;
using System.Collections.Generic;
using System.Console;
using System.Linq;
module Program
{
Main() : void
{
WriteLine(array["abcd", "efgh"].ToArray());
_ = ReadLine();
}
}
Если закоментировать строчку using System.Linq;, то компилятор начинает ругаться на метод ToArray() — не определен для типа array. В чем он конечно прав. Непонятно почему, если использовать System.Linq, то все компилируется? Я ожидал ошибки компиляции в любом случае.
Здравствуйте, Аноним, Вы писали:
А>Если закоментировать строчку using System.Linq;, то компилятор начинает ругаться на метод ToArray() — не определен для типа array. В чем он конечно прав. Непонятно почему, если использовать System.Linq, то все компилируется? Я ожидал ошибки компиляции в любом случае.
System.Array не содержит метода ToArray.
Поэтому и не компилируется.
System.Linq.Enumerable содержит
метод расширение ToArray, и поэтому компилируется.
Здравствуйте, Аноним, Вы писали:
А>Если закоментировать строчку using System.Linq;, то компилятор начинает ругаться на метод ToArray() — не определен для типа array. В чем он конечно прав. Непонятно почему, если использовать System.Linq, то все компилируется? Я ожидал ошибки компиляции в любом случае.
Знаю-знаю эту проблему
Объяснение дал _nn_.
Вам надо просто использовать .NToArray(). Где-то полгода назад все методы стандартной библиотеки Nemerle по работе с IEnumerable, которые дублировались в Linq, были соответственно переименованы.