- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是从 Apache Edgent Documentation 中获取的代码
我不明白元组到底是什么。代码如下:
public static void main(String[] args) throws Exception {
TempSensor sensor = new TempSensor();
DirectProvider dp = new DirectProvider();
Topology topology = dp.newTopology();
TStream<Double> tempReadings = topology.poll(sensor, 1, TimeUnit.MILLISECONDS);
TStream<Double> simpleFiltered = tempReadings.filter(tuple ->
!optimalTempRangeRef.get().contains(tuple));
simpleFiltered.sink(tuple -> System.out.println("Temperature is out of range! "
+ "It is " + tuple + "\u00b0F!"));
tempReadings.print();
dp.submit(topology);
}
我得到的错误是tuple cannot be resolved to a variable。我得到的错误到底是什么?谢谢。
最佳答案
TStream<T>
interface旨在模拟数据流,通常是传感器读数。 T
在这种情况下是用于存储单个读数的类型,但“读数”实际上可以表示多个数字(例如温度、湿度和风速)连接在一起形成一个复合类型,这里通常称为“元组”值(value)观。
但是,查看您的示例的上下文,我们正在处理一系列简单的温度读数,所以这里 T
对应单号类型Double
.因此,选择“元组”作为变量名有点令人困惑(从数学上讲,它是一个 1 元组,但在这种情况下,它仅表示“数字”)。
在您的代码中,filter()
方法需要一个 predicate , 这是
tuple -> !optimalTempRangeRef.get().contains(tuple)
和optimalTempRangeRef.get()
返回 Range(Double)
,所以谓词是说“我们的温度值是否超出我们的最佳范围?”
来自 Range
的文档:
contains() is used to check for containment: e.g.
Ranges.closed(2,4).contains(2); // returns true
Ranges.open(2,4).contains(2); // returns false
Ranges.atLeast(2).contains(2); // returns true
Ranges.greaterThan(2).contains(2); // returns false
Ranges.atMost(2).contains(2); // returns true
Ranges.lessThan(2).contains(2); // returns false
编辑:
看起来您的 IDE 在使用 Java 8 lambda 语法时遇到了问题,因此您可以使用匿名内部类重写代码,如下所示:
import org.apache.edgent.function.Predicate;
import org.apache.edgent.function.Consumer;
public static void main( String[] args ) throws Exception
{
TempSensor sensor = new TempSensor();
DirectProvider dp = new DirectProvider();
Topology topology = dp.newTopology();
TStream<Double> tempReadings = topology.poll( sensor, 1, TimeUnit.MILLISECONDS );
TStream<Double> filteredStream = tempReadings.filter( new Predicate<Double>()
{
public boolean test( Double reading )
{
return !optimalTempRangeRef.get().contains( reading );
}
} );
filteredStream.sink( new Consumer<Double>()
{
public void accept( Double reading )
{
System.out.println( "Temperature is out of range! "
+ "It is " + reading + "\u00b0F!" )
}
} );
tempReadings.print();
dp.submit( topology );
}
关于java - TStream 中的元组到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50525962/
这对你们来说可能很简单,但由于我是java新手,所以我想知道实际上什么是 接下来的部分会发生什么? if (args.length > 0) { file = args[0]; } publi
在我的 View Controller 中,我将 UITapGestureRecognizer 添加到 self.view。我在 self.view 之上添加了一个小 View 。当我点击小 View
我今天尝试从 Obj-C 开始并转到 Swift,我正在阅读文档。我试图在 Swift 中创建一个简单的 IBOutlet,但它不断给我这些错误。 View Controller 没有初始化器 req
我正在尝试使用 VIM 完成(字典和当前缓冲区),但我遇到了问题?和 !在方法名称的末尾。我能以某种方式向 vim 解释方法名称(基本上是单词)最后只能有它,而且只有一个,即 method_name
我是一名优秀的程序员,十分优秀!