Re[104]: Тормознутость и кривость linq
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 15.05.16 15:45
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, Serginio1, Вы писали:


_>>>Да не про то речь. ))) Вот класс Program и функция Main вот прямо в этом твоём коде. Без них можно (пример Ikemefula был без них) или нет? И если нет, то объясни зачем они нужны в подобном скрипте...

S>> То есть 2-3 лишние строчки тебя так смущают?

_>Ну во-первых не 2-3 строки, т.к. там ещё куча скобочек, модификаторов доступа и т.п. ненужного синтаксического мусора.

_>А во-вторых для обсуждаемого скрипта из нескольких строк подобный синтакический мусор очень даже существенен, т.к. сравним с объёмом полезного кода.

Эти скобочки автоматически добавляются.
S>>А то, что интеллисенсе ускоряет набор кода и синтаксический контроль тебя это не волнует?

_>Какое интересно автодополнение ты видишь в данном примере? )

Все методы put,mount итд

lcd("project")
    .mount("-t tmpfs -o size=500M tmpfs /mnt/ramdisk")
    .mkdir("/mnt/ramdisk/project")
    .cd("/mnt/ramdisk/project"):
    .put("Src", "./")
    .make("install")
    .umount("/mnt/ramdisk");

S>>Мало того, я могу сделать приложение, которое будет с помощью рослина https://github.com/dotnet/roslyn/wiki/Scripting-API-Samples
S>>скомпилировать код. И он ничем не будет отличаться от кода Ikemefula

_>Хы, ну теоретически то всё можно. Вот к примеру вполне себе существуют интерпретаторы (а не компиляторы) C++, только вот никто особо не стремится использовать их для написания скриптов (не считая пары специфических случаев, типа обработки данных в CERN).

Так код то тот же, что и у тебя. На С++ будет другой код.
Ты просил написать тот же код, вот пример. Ни строчки больше. А если сделать универсальное, но нужно добавить импорты

S>> Кстати а в скрипте где ты указываешь какие библиотеки и классы использовать?


_>Стандартную библиотеку указывать не надо. Дополнительные библиотеки указываются как и везде с помощью команды import. А причём тут это вообще? )

А в том, что их указывать то надо по любом. Так, что в худшем случае речь идет от двух строчках, в лучшем со Scripting API одно и тоже.

Вот пример использования в 1С


врап=новый COMОбъект("NetObjectToIDispatch45");
    КлассДляВычесленияВыражений=Врап.ПолучитьТипИзСборки("ScriptApiDlls.КлассДляВычесленияВыражений",ПутьКДлл+"ScriptApiDlls.dll");

    Опции=КлассДляВычесленияВыражений.Опции;
    Катаог=Врап.ПолучитьТип("System.AppDomain").CurrentDomain.BaseDirectory;
    ИмяСборкиAngleSharp=Врап.ПолучитьТип("System.IO.Path").Combine(Катаог,"AngleSharp.dll");
    СтрокаКода = "string WebsiteUrl = ""http://localhost:54361"";
    |var configuration = Configuration.Default.WithDefaultLoader().WithCookies();
    |    var context = BrowsingContext.New(configuration);
    |    context.OpenAsync(WebsiteUrl).Wait();
    |   
    |   var elem=context.Active.QuerySelector<IHtmlAnchorElement>(""a.log-in"");
    |   if (elem==null) return context.Active.Body.InnerHtml;
    |   elem.Navigate().Wait();
    |    context.Active.QuerySelector<IHtmlFormElement>(""form"").Submit(new
    |    {
    |        User = ""User"",
    |        Password = ""secret""
    |    }).Wait();
    |context.Active.QuerySelector<IHtmlAnchorElement>(""a.secret-link"").Navigate().Wait();
    |
    |return context.Active.QuerySelector(""p"").Text();
    |";
    
    scr = Опции
    .WithReferences(ИмяСборкиAngleSharp)
    .WithImports("System","AngleSharp","AngleSharp.Dom.Html","AngleSharp.Extensions");
   
    резулт = КлассДляВычесленияВыражений.Вычислить(СтрокаКода,scr);
    Сообщить(резулт);
и солнце б утром не вставало, когда бы не было меня
Отредактировано 15.05.2016 15:54 Serginio1 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.