颤振教程

时间:2019-01-08 18:57:41

标签: android dart flutter

我正在遵循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进入教程页面。

1 个答案:

答案 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; } (又称数组)的索引。

它将交替显示建议和分隔线。