Области операций и функций PowerShell [дубликаты]

Это для Chrome, после ответа user800583 answer ...

Я потратил несколько часов на эту проблему и не нашел лучшего подхода, но:

  • Есть 16 'zoomLevel', а не 10
  • Когда Chrome полноэкранный / максимизированный, коэффициент равен window.outerWidth/window.innerWidth, а когда это не так, это соотношение представляется (window.outerWidth-16)/window.innerWidth, однако к 1-му случаю может быть применен второй.

Итак, я пришел к следующему ...

Но этот подход имеет ограничения: например если вы играете аккордеон с окном приложения (быстро увеличивайте и уменьшайте ширину окна), вы получите промежутки между уровнями масштабирования, хотя масштаб не изменился (может быть, внешняя ширина и внутренняя ширина не точно обновляются в одно и то же время).

var snap = function (r, snaps)
{
    var i;
    for (i=0; i < 16; i++) { if ( r < snaps[i] ) return i; }
};
var w, l, r;
w = window.outerWidth, l = window.innerWidth;
return snap((w - 16) / l,
            [ 0.29, 0.42, 0.58, 0.71, 0.83, 0.95, 1.05, 1.18, 1.38, 1.63, 1.88, 2.25, 2.75, 3.5, 4.5, 100 ],
);

И если вам нужен коэффициент:

var snap = function (r, snaps, ratios)
{
    var i;
    for (i=0; i < 16; i++) { if ( r < snaps[i] ) return eval(ratios[i]); }
};
var w, l, r;
w = window.outerWidth, l = window.innerWidth;
return snap((w - 16) / l,
            [ 0.29, 0.42, 0.58, 0.71, 0.83, 0.95, 1.05, 1.18, 1.38, 1.63, 1.88, 2.25, 2.75, 3.5, 4.5, 100 ],
            [ 0.25, '1/3', 0.5, '2/3', 0.75, 0.9, 1, 1.1, 1.25, 1.5, 1.75, 2, 2.5, 3, 4, 5 ]
);

10
задан jamiet 8 December 2014 в 15:26
поделиться

4 ответа

Подумайте о рабочих процессах как близоруких элементах программирования.

Рабочий процесс не может видеть за пределами того, что сразу доступно в области. Таким образом, вложенные функции не работают с одним рабочим процессом, потому что не могут их видеть.

Исправление состоит в том, чтобы встраивать рабочие процессы вместе с вложенными функциями. Например:

workflow workflow1
{
    function func1 
    {
        "in func1"
        workflow workflow2
        {
            function func2 
            {
                "in func2"
            }
            func2
        }
        "in workflow2"
        workflow2
    }
    "in workflow1"
    func1
}
workflow1

Затем он видит вложенные функции:

in workflow1
in func1
in workflow2
in func2

Подробнее об этом здесь

9
ответ дан Micky Balladelli 23 August 2018 в 02:46
поделиться
  • 1
    Спасибо Микки. Вроде бы раздражает, но у меня есть функции, которые я хочу использовать в разных рабочих процессах, но теперь я не могу. Kinda поражает цель функций IMO. – jamiet 9 December 2014 в 09:07

На самом деле не ответ на ваш вопрос, а больше следа.

Из здесь :

Когда вы запускаете рабочий процесс сценария, Windows PowerShell анализирует сценарий в абстрактное синтаксическое дерево (AST). Наличие ключевого слова «workflow» заставляет компилятор script-to-workflow использовать этот AST для генерации XAML, формат, необходимый для среды выполнения Windows Workflow Foundation. Чтобы создать пользовательский интерфейс для взаимодействия с этим рабочим процессом, мы создаем функцию-обертку с теми же параметрами, но вместо этого координируем выполнение рабочего процесса в исполнительном редакторе PowerShell Workflow. Вы можете увидеть как функцию обертки, так и сгенерированную XAML, выполнив:

Get-Command workflow1 |Format-List *

. Я сделал это для вашего конкретного рабочего процесса (см. Рабочий процесс1 в приведенной выше команде) и сгенерированы как XAML, так и PowerShell код ... интересный. Код XAML не содержит ссылок на func2, но содержит ссылку на func1.

1
ответ дан David Brabant 23 August 2018 в 02:46
поделиться

Чтобы смутно суммировать все ответы, не задавайте вопросов, почему они ведут себя таким образом, просто согласитесь с тем, что он делает и справляется с этим. Достаточно справедливо.

Я написал целый конвейер развертывания в Powershell без обработки, и я бы хотел его оптимизировать, используя «foreach -parallel» рабочего процесса, однако, похоже, налогом на это является то, что я «Мне нужно вернуться и переписать все это в рабочий процесс. Это слишком большой налог, чтобы заплатить, к сожалению, только для того, чтобы получить параллельный цикл foreach.

Извлеченный урок - используйте рабочий процесс Powershell из get-go.

0
ответ дан jamiet 23 August 2018 в 02:46
поделиться

Вы можете обернуть функции и их вызовы внутри InlineScript - это может быть скрипт для каждой системы. Затем запустите этот inlinescript внутри цикла foreach -Parallel, работающего через системы, которые вы хотите запросить.

0
ответ дан Thomas Lee 23 August 2018 в 02:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: