Почему бы вам просто не использовать
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
}
}
ИЗМЕНИТЬ: К сожалению. Я уже написал следующее. Но вы говорите "звонит, а не генерирует" функцию очистки. То, что я написал, вероятно, не то, что вы хотите, хотя, кажется, это будет получить предполагаемый результат.
Простое цитирование (отслаивание)
сработало на меня.
(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 ()
до и после свободного.
Вам нужен именно командлет? Интересно, почему ты не любишь брать длину. Если это часть сценария, то выглядит хорошо.
$s = "12345"
$s.substring(0, [System.Math]::Min(10, $s.Length))
Спасибо Дмитрию за ответ, я превратил ее в функцию и сделал так, что она основана на 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