stringbuilder 字符查找

stringbuilder characters find

  def ff(c: Char): Boolean =  
  {
    while (cursor <= end)
    {
      if (buffer.charAt(cursor) == c)
      {
      return true
      }
      else
      {
      cursor += 1
      }
    }
    return false   
  }
  def ff(p: Char => Boolean): Boolean = 
  {
    ff(p)
  }

该函数的想法是从光标处开始,找到下一次出现的由名为 c 的变量定义的字符作为函数的参数,这样做会在使用 Junit 进行测试时导致计算器溢出有人解释我哪里错了吗?

注意(光标需要停留在找到字符的位置)

我还包含了 FF 函数的谓词版本,其中 (p) 是要搜索的谓词,我不确定是哪一个导致了溢出。

...could somebody explain where I'm going wrong?

你做错的一件事是使用 Scala 语言编写 C 代码。学习一门新语言的 goals/purposes/joys 之一是它可以教会您解决问题的新方法。花时间学习特定语言的习语和最佳实践是实现目标的一种方式。

其他一些不对的地方:

  • import scala.io.StdIn - 未使用
  • buffer.charAt(cursor) - 如果 cursor== endwhile 条件允许,这将抛出。
  • def ff(p: Char => Boolean) - 除了调用自身之外什么都不做。有保证的 Whosebug。

看看这是否能让您更接近您想要的。

def ff(c: Char): Boolean = {
  val next = buffer.indexOf(c, cursor)
  cursor = if (next < 0) end else next
  cursor == next
}
def ff(p: Char => Boolean): Boolean =
  cursor != end && (p(buffer(cursor)) || {
    cursor += 1
    ff(p)
  })