我正在使用Arduino IDE,它不允许嵌套函数,或者在声明函数之前调用函数(它不会跳转到找到它)。 在我的代码中,我需要一个或另一个.. 此外,使它成为一个大功能是行不通的,因为当我检查回早期的传感器时,我必须写下如果是,如果没有一遍又一遍地做什么。 在这里,我试图感知光,如果有光,则转到PIR传感器,如果没有,再次运行光传感器。现在如果PIR在3.5秒内检测到两次动作,检查颜色,如果没有,检查光线。 现在,颜色会感知颜色并对其进行分类(r g或b)。现在它再次检查PIR,如果有移动,它再次检查颜色并再次检查pir。现在,如果pir没有感知到移动,它就会发送到连续的行......
我在使用它们之前声明了一些功能(打印线),但其中一些不是因为我陷入了循环。 当我检查光线时,如果它是正的,我运行PIR,所以我需要在ligth之前声明pir功能。但在pir,如果它是负的(没有运动),我运行光传感器,这意味着我应该在pir之前声明光传感器。 我陷入了那个循环......
List<List<King>> conflicts = kings.stream()
.flatMap(k1 -> subStream(kings, k1)
.map(k2 -> Arrays.asList(k1, k2)))
.filter(kingPair -> threatensEachother(kingPair))
.collect(Collectors.toList());
}
private static Stream<King> subStream(List<King> kings, King k1) {
return kings.subList(kings.indexOf(k1) + 1, kings.size()).stream();
}
private static boolean threatensEachother(List<King> kingPair) {
List<Square> k1Squares = getThreatenedSquares(kingPair.get(0).getLocation());
List<Square> k2Squares = getThreatenedSquares(kingPair.get(1).getLocation());
return sqauresOverlap(k1Squares, k2Squares);
}
private static boolean squaresOverlap(List<Squares> k1Squares, List<Squares> k2Squares) {
return k1Squares.stream()
.anyMatch(k1Square -> k2Squares.contains(k1Square).
}
答案 0 :(得分:0)
您可以在定义函数之前声明它:
void setup();
然后你可以打电话给它:
setup();
...稍后在文件中你可以写出它的定义:
void setup() {
// implementation here
}