SonarLint:删除不必要的布尔文字

SonarLint: Remove the unnecessary Boolean literal

我在 SearchView 中设置了:

setOnQueryTextListener(object : SearchView.OnQueryTextListener {
    override fun onQueryTextSubmit(query: String) = false
    override fun onQueryTextChange(newText: String): Boolean {
        filterSet.apply { 
            clear()
            addAll(searchSet.filter {
                if (newText.isEmpty()) true
                else it.name.contains(newText, true) 
            }) 
        }; return false
    }
}

SonarLint 说 true(在 else 之前)是不必要的,为什么? 还能怎么做?

你不需要在过滤器中有if和else,你的代码可以如下:

// 要更改的行

 if (newText.isEmpty()) true
 else it.name.contains(newText, true)

// 要更改的行

     setOnQueryTextListener(object : SearchView.OnQueryTextListener {
          override fun onQueryTextSubmit(query: String) = false
          override fun onQueryTextChange(newText: String): Boolean {
               searchSet.filter { newText.isEmpty() || it.name.contains(newText, true) } 
               return false
          }
      }