我是Scala的新手,我甚至无法连接字符串。这是我的代码:
object RandomData {
private[this] val bag = new scala.util.Random
def apply(sensorId: String, stamp: Long, size: Int): String = {
var cpt: Int = 0
var data: String = "test"
repeat(10) {
data += "_test"
}
return data
}
}
我收到了错误:
type mismatch;
found : Unit
required: com.excilys.ebi.gatling.core.structure.ChainBuilder
我做错了什么?
答案 0 :(得分:2)
repeat
以重复Gatling任务,例如查询网站。如果您查看documentation(我无法找到repeat
的API文档的链接),您会看到重复需要链 ,这就是为什么你的错误信息说“required:com.excilys.ebi.gatling.core.structure.ChainBuilder”。但是,您所做的只是追加一个字符串 - 它不会返回ChainBuilder
类型的值。
此外,附加到字符串是不应该通过Gatling完成的。在我看来,好像你将Gatling的repeat
与Scala for
loop混为一谈。如果您只想将"_test"
追加到data
10次,请使用Scala的一个循环(for
,while
)或功能方法,例如foldLeft
。以下是两个例子:
/* Imperative style loop */
for(i <- 1 to 10) {
data += "_test"
}
/* Functional style with lazy streams */
data += Stream.continually("_test").take(10).mkString("")
答案 1 :(得分:0)
您的问题是阻止
{
data += "_test"
}
评估为Unit
,而repeat
方法似乎希望评估为ChainBuilder
。
查看repeat
方法的文档。我无法找到它,但假设它看起来像
def repeat(numTimes: Int)(thunk: => ChainBuilder): Unit
我不确定repeat
方法是否有什么特别之处,但根据您的用法,您可以使用此块代替repeat(10){...}
for(i <- 1 to 10) data += "_test"
另外,作为旁注,您不需要使用scala return
关键字。您可以说data
而不是return data
。