Здравствуйте, 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);
Сообщить(резулт);