一、案例分析
//字符串匹配的BF算法
package Match
import scala.util.control.Breaks._
class BF {
def bfmatch(main:Array[Char],sub:Array[Char]): Int ={
require(main != null, "main array required")
require(sub != null, "sub array required")
require(main.length >= sub.length, "sub array should be small than main array")
var result = -1
breakable{
for (i <- 0 to (main.length - sub.length)){
//slice字符串截取,左闭右开,[0,2)
if (main.slice(i,i + sub.length) sameElements sub){
result = i
break
}
}
}
result
}
}
object test{
def main(args:Array[String]): Unit ={
val bf = new BF
var str1 = "heldfsfslo".toCharArray
var str2 = "lo".toCharArray
println(bf.bfmatch(str1,str2))
}
}
二、breakable用法
- scala没有提供Java中类似的break和continue操作,可以用其它方式实现
- 首先需要导入scala.util.control.Break._这个包,其次将需要控制的结构放入breakable{}代码块中,如上述所示就为break用法
for (i <- 0 to (main.length - sub.length)){
breakable{
if (main.slice(i,i + sub.length) sameElements sub){
result = i
break
}
}
}
如上述所示,若breakable{}在for循环中,就为continue用法