Встроенная функция в * .ps1 не распознает [дубликат]

Хорошо, хотя я уже рассмотрел ответы font-size: 0; и not implemented CSS3 feature, после попытки выяснил, что ни одно из них не является реальным решением.

На самом деле нет даже одного обходной путь без сильных побочных эффектов.

Затем я решил удалить пробелы (это ответы об этом аргументе) между inline-block divs из моего источника HTML (JSP), превратив это:

<div class="inlineBlock">
    I'm an inline-block div
</div>
<div class="inlineBlock">
    I'm an inline-block div
</div>

к этому

<div class="inlineBlock">
    I'm an inline-block div
</div><div class="inlineBlock">
    I'm an inline-block div
</div>

, который является уродливым, но работает.

Но подождите минуту ... что, если я создаю свой div внутри Taglibs loops (Struts2, JSTL и т. д.)?

Например:

<s:iterator begin="0" end="6" status="ctrDay">
    <br/>
    <s:iterator begin="0" end="23" status="ctrHour">
        <s:push value="%{days[#ctrDay.index].hours[#ctrHour.index]}">
            <div class="inlineBlock>
                I'm an inline-block div in a matrix 
                (Do something here with the pushed object...)
           </div>
       </s:push>
    </s:iterator>
</s:iterator>

Абсолютно не мыслимо встроить все это, это означало бы

<s:iterator begin="0" end="6" status="ctrDay">
    <br/>
    <s:iterator begin="0" end="23" status="ctrHour"><s:push value="%{days[#ctrDay.index].hours[#ctrHour.index]}"><div class="inlineBlock>
                I'm an inline-block div in a matrix             
                (Do something here with the pushed object...)
           </div></s:push></s:iterator>
</s:iterator>

, что невозможно прочитать, трудно

Решение, которое я нашел:

использует комментарии HTML, чтобы связать конец одного div с началом следующего!

<s:iterator begin="0" end="6" status="ctrDay">
   <br/>
   <s:iterator begin="0" end="23" status="ctrHour"><!--
    --><s:push value="%{days[#ctrDay.index].hours[#ctrHour.index]}"><!--
        --><div class="inlineBlock>
                I'm an inline-block div in a matrix             
                (Do something here with the pushed object...)
           </div><!--
    --></s:push><!--
--></s:iterator>
</s:iterator>

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

И, как положительный побочный эффект, HTML source, хотя и заражены пустым комментарием , приведет к правильному отступу;

возьмем первый пример: imho this:

    <div class="inlineBlock">
        I'm an inline-block div
    </div><!--
 --><div class="inlineBlock">
        I'm an inline-block div
    </div>

лучше этого

    <div class="inlineBlock">
         I'm an inline-block div
    </div><div class="inlineBlock">
         I'm an inline-block div
    </div>

Надеюсь, что это поможет ...

14
задан laitha0 27 June 2013 в 16:44
поделиться

2 ответа

Powershell обрабатывает по порядку (сверху вниз), поэтому определение функции должно быть до вызова функции:

function email($text){
    #email $text
}

#Do things | 
foreach{
    email($_)
}

Вероятно, он отлично работает в ISE, потому что у вас еще есть определение функции в памяти от предыдущего запуска или теста.

25
ответ дан JNK 1 September 2018 в 07:37
поделиться

Когда дело доходит до вызова функции, PowerShell довольно отличается от других языков программирования следующими способами:

  1. При передаче аргументов функции скобки не разрешены (и вызывает parse error, если Set-StrictMode установлен на -version 2.0 или выше / Latest), однако аргументы Parenthesized должны использоваться для вызова метода, который может быть либо методом .NET, либо определенным пользователем способом (определенным в классе - в PS 5.0 или выше).
  2. Параметры разделяются пробелами и не разделяются запятыми.
  3. Будьте осторожны, когда вы определяете функцию. Поскольку PowerShell последовательно обрабатывает строку за строкой в ​​порядке сверху вниз, следовательно, перед вызовом функции необходимо игнорировать функцию:
        Function func($para1){
              #do something
        }
        func("arg1")  #function-call
    

В ISE функция, определенная ниже функции- вызов может отображаться как работающий, но (будьте осторожны) это определение кешированной функции в памяти из предыдущего прогона, поэтому, если вы обновили функцию, которую вы ввернули.

0
ответ дан Eddie Kumar 1 September 2018 в 07:37
поделиться
Другие вопросы по тегам:

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