我正在遵循flutter.io中提供的教程 在本教程的第四部分中,我很难理解以下内容:
Widget _buildSuggestions() {
return ListView.builder(
padding: const EdgeInsets.all(16.0),
itemBuilder: /*1*/ (context, i) {
if (i.isOdd) return Divider(); /*2*/
final index = i ~/ 2; /*3*/
if (index >= _suggestions.length) {
_suggestions.addAll(generateWordPairs().take(10)); /*4*/
}
return _buildRow(_suggestions[index]);
});
}
具体在以下行:
final index = i ~/ 2; /*3*/
有人可以在插入此行时向我解释目的吗?
Link进入教程页面。
答案 0 :(得分:0)
将使用不同的itemBuilder
值多次调用i
lambda。当i
为奇数(1、3、5、7,...)时,它将返回Divider
。剩下的情况是偶数(0、2、4、6,...)。 index = i ~/ 2;
行表示将i
除以2(使用整数数学)并赋值给index
,现在,suggestions
的值为0、1、2、3等。>
它用作List
#include <iostream>
#include <unordered_map>
#include <utility>
#include <string>
#include <fstream>
int main() {
std::unordered_map<std::string, unsigned char> kmap;
std::ifstream infile("kmers_from_reads");
std::string kmer;
int abun;
while(infile >> kmer >> abun) {
unsigned char abundance = (abun > 255) ? 255 : abun;
kmap[kmer] = abundance;
}
std::cout << sizeof(*kmap.begin(0)) << std::endl;
}
(又称数组)的索引。
它将交替显示建议和分隔线。