Действительно ли возможно объявить две переменные различных типов в для цикла?

Я недавно наткнулся на rxjava-файл , это расширение RxJava . В отличие от других решений, это использует NIO от Java.

import rx.Observable;
import rx.functions.Action1;
import com.github.davidmoten.rx.FileObservable;

// ... class definition omitted

public void tailLogFile() throws InterruptedException {
    Observable tailer = FileObservable.tailer()
                                .file("application.log") // absolute path
                                .tailText();

    tailer.subscribe(
        new Action1() {
            @Override
            public void call(String line) {
                System.out.println("you got line: " + line);
            }
        },
        new Action1() {
            @Override
            public void call(Throwable e) {
                System.out.println("you got error: " + e);
                e.printStackTrace();
            }
        }
    );

// this solution operates threaded, so something  
// is required that prevents premature termination

    Thread.sleep(120000);
}

223
задан Georg Fritzsche 21 April 2010 в 13:53
поделиться

4 ответа

Невозможно, но вы можете:

float f;
int i;
for (i = 0,f = 0.0; i < 5; i++)
{
  //...
}

Или явно ограничить область действия f и i с помощью дополнительных скобок:

{
    float f; 
    int i;
    for (i = 0,f = 0.0; i < 5; i++)
    {
       //...
    }
}
216
ответ дан 23 November 2019 в 03:58
поделиться

Также Вы могли использовать как ниже в C++.

int j=3;
int i=2;
for (; i<n && j<n ; j=j+2, i=i+2){
  // your code
}
0
ответ дан 23 November 2019 в 03:58
поделиться

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

for(struct { int a; char b; } s = { 0, 'a' } ; s.a < 5 ; ++s.a) 
{
    std::cout << s.a << " " << s.b << std::endl;
}
267
ответ дан 23 November 2019 в 03:58
поделиться

Вы не можете объявить несколько типов при инициализации, но можете назначить несколько типов, например:

{
   int i;
   char x;
   for(i = 0, x = 'p'; ...){
      ...
   }
}

Просто объявите их в их собственном объеме.

14
ответ дан 23 November 2019 в 03:58
поделиться
Другие вопросы по тегам:

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