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
== end
,while
条件允许,这将抛出。
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)
})
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
==end
,while
条件允许,这将抛出。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)
})