2013-09-14 2 views
-1

Я все еще новичок в Java, и я хочу знать, есть ли способ создать нечто вроде пользовательского цикла? Я хотел бы определить повторение, чтобы я мог пройти в любом блоке кода. Это означает:Возможно ли создать модифицированный цикл в java?

вызывающую функцию:

String str = ""; 
repeat(5) { 
    str += "x"; 
} 

и метод структуру:

public void repeat(int count) { 
    for (int i = 0; i <= count; i++) { 
     // e.g. str += "x"; (any block of code) 
    } 
} 

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

+4

Попробуйте, и вы узнаете, работает ли оно. Вместо этого я рекомендую использовать 'StringBuilder'. – Maroun

+0

Почему это было бы невозможно? –

+0

@ ŁukaszRzeszotarski Я думаю, вы неправильно поняли вопрос. OP хочет как-то определить 'repeat', чтобы он мог пройти в любом блоке кода, от печати до консоли, чтобы рассылать Google запросы по сети. Просто повторять статический блок кода не будет. – hexafraction

ответ

2

Не до Java 8. В Java 8, мы будем иметь поддержку things akin to lambdas/closures где мы сможем пройти в функции или его фрагмент вместо примитивного/объекта. Когда Java 8 происходит вокруг, вы можете сделать следующее:

void repeat(int iter, Runnable r){ 
    for(int i=0; i<iter; i++){ 
     r.run(); 
    } 
} 

По ссылке лямбда вы будете смотреть на что-то вроде:

repeat(5, () -> { str += "x"; }); 

для вызова.

+0

это не то, как предполагается использовать Runnable', это ужасный совет! –

+1

@JarrodRoberson К этому я цитирую свои собственные слова: «Я не знаю, почему вы хотите сделать это с помощью runnable. Вы просто создадите анонимные внутренние классы везде». На самом деле OP должен ждать Java 8, прежде чем он даже попытается это сделать. – hexafraction

+0

Где ОП упоминает «Runnable» в вопросе? Насколько я могу судить, вы предлагаете это, и это ужасный совет и неправильное использование «Интерфейса». –

Смежные вопросы