Итак, я просматривал некоторые новые функции java 7, включая try-with-resources ] бит.
Я понимаю, как это работает, и все такое, я только заметил, что синтаксис, используемый для указания ресурсов, немного странный.
try
(InputStream fis = new FileInputStream(source);
OutputStream fos = new FileOutputStream(target))
{
// stuff
}
}
catch (Exception e) {
// stuff
}
В частности, определение ресурсов:
try (InputStream fis = new FileInputStream(source);
OutputStream fos = new FileOutputStream(target))
Есть ли другое место в java, где разделение операторов внутри блока скобок допустимо?
Единственный другой раз, о котором я могу думать, - это цикл for
for ( ; ; )
, но это не совсем то же самое, поскольку должно быть ровно 2 ;
s, и операторы разделяются ,
как в
for (int i = 1, j = 100; i <= 100, j > 0; i = i-1, j = j-1)
Итак, мой вопрос: откуда взялся этот синтаксис? Есть ли причина, по которой операторы разделены ;
вместо разделителей ,
? Есть ли хотя бы другой сопоставимый язык, который имеет подобное использование разделенных операторов ;
внутри блока ()
? Я не могу вспомнить пример на java, C или python.