PowerShell: как ограничить строку до N символов?

Почему бы вам просто не использовать

void a ()
{
    int x;
    boolean b = false;
    if (Math.random() < 0.5)
    {
        x = 0;
        b = true;
        x++;
    }
    if (b) {
        //do something else which does not use x
    }
}

В коде, почему вы хотите использовать x вне первого блока if, вся логика с участием x может быть реализована в первом случае, если только блок, я не вижу случая, когда вам понадобится использовать другой if, чтобы использовать x.

EDIT: или вы также можете использовать:

void a ()
{
    int x;
    boolean b = (Math.random() < 0.5);
    if (b) {
         x=1
        //do something 
    }
}
13
задан Ethan Post 25 February 2010 в 18:07
поделиться

2 ответа

ИЗМЕНИТЬ: К сожалению. Я уже написал следующее. Но вы говорите "звонит, а не генерирует" функцию очистки. То, что я написал, вероятно, не то, что вы хотите, хотя, кажется, это будет получить предполагаемый результат.

Простое цитирование (отслаивание) сработало на меня.

(ns fruit)
(defmacro eat [] '(peel))

(ns apple)
(defn peel [] (prn "peeled apple"))
(fruit/eat)

(ns banana)
(defn peel [] (prn "peeled banana"))
(fruit/eat)
-121--4222840-

Другие ответы хорошо объяснили, как обрабатывается размер блока. Чтобы узнать, сколько памяти освобождено, единственное решение, которое я могу придумать, это позвонить mallinfo () до и после свободного.

-121--3612607-

Вам нужен именно командлет? Интересно, почему ты не любишь брать длину. Если это часть сценария, то выглядит хорошо.

$s = "12345"
$s.substring(0, [System.Math]::Min(10, $s.Length))
23
ответ дан 1 December 2019 в 06:53
поделиться

Спасибо Дмитрию за ответ, я превратил ее в функцию и сделал так, что она основана на 1, а не на 0.

function acme-substr ([string]$str, $start, $end) {
   $str.substring($start-1, [System.Math]::Min($str.Length-1, $end))
}

> $foo="0"*20
> $foo
00000000000000000000
> acme-substr $foo 1 5
00000
0
ответ дан 1 December 2019 в 06:53
поделиться
Другие вопросы по тегам:

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