val partitionsPerFetcher = partitionAndOffsets.groupBy{ case(topicAndPartition, brokerAndInitialOffset) =>
BrokerAndFetcherId(brokerAndInitialOffset.broker, getFetcherId(topicAndPartition.topic, topicAndPartition.partition))}
这段代码是什么意思。。 scala不是很熟,我网上看到groupBy是对list按照函数进行分组,但是这个是怎么分的呢?
可看出来groupBy的参数是一个 (A) => K 的函数,即有一个输入和一个输出的函数
我们做一个小测试
很明显(A) => K 中A即Seq中的每项,而K为该项对应的key,Scala根据这个函数返回的key,判断那些项是一组的
上面代码可以写成这样
所以你的代码
partitionAndOffsets是一个Seq[(topicAndPartition, brokerAndInitialOffset)]这样的一个二元组序列
而每项的key为BrokerAndFetcherId(brokerAndInitialOffset.broker, getFetcherId(topicAndPartition.topic, topicAndPartition.partition))