我如何在scala中提取一个序列
How do I extract a sequence in scala
我是 Scala 的新手,我正在努力提取我的 gatling 测试的公共部分。
exec(
http("Open Page")
.get("/page")
).exec(
http("GET from REST")
.get("/")
.disableFollowRedirect
.resources(
http("x").get("/rest/x/").check(jsonPath("$.x").exists),
http("y").get("/rest/y/").check(jsonPath("$.y").exists)
)
)
我怎样才能做到这一点:
exec(
http("Open Page")
.get("/page")
).exec(
http("GET from REST")
.get("/")
.disableFollowRedirect
.resources(
resources
)
)
val resources = ...???
.resources 签名看起来像这样
def resources(res: HttpRequestBuilder*):
还有一个...
由于我即将统一一些传递的资源值,通常我必须添加一些额外的东西,应该使用什么语法来使下面的代码正确。
exec(
http("Open Page")
.get("/page")
).exec(
http("GET from REST")
.get("/")
.disableFollowRedirect
.resources(
common: _*,
http("z").get("/rest/z/").check(jsonPath("$.z").exists)
)
)
val common: Seq[HttpRequestBuilder] = Seq(
http("x").get("/rest/x/").check(jsonPath("$.x").exists),
http("y").get("/rest/y/").check(jsonPath("$.y").exists)
)
我明白了
exec(
http("Open Page")
.get("/page")
).exec(
http("GET from REST")
.get("/")
.disableFollowRedirect
.resources(
common:+
http("z").get("/rest/z/").check(jsonPath("$.z").exists): _*
)
)
但也许有 "proper" 方法可以做到这一点。
val resources: Seq[HttpRequestBuilder] = ??? // Or subtype
...
// Type ascription, but functionally equivalent to other languages' "splat" operators
.resources(resources: _*)
类型归属是 expr: Type
形式的表达式。这种表达式的类型是 Type
,编译器必须以某种方式使 expr
符合该类型。在这里对可变参数使用它的基本原理是 resources
的参数是 HttpRequestBuilder*
(即使没有这样的类型),所以你可以使用类型归属让编译器解释一个对象键入 Seq[HttpRequestBuilder]
作为 HttpRequestBuilder*
,即使这样的类型实际上并不存在。它使用通配符 _
,因此您不必键入整个类型名称。
编辑:是的,如果您想将资源列表与其他内容合并,然后将其作为可变参数传递,您应该这样做
.resources(somethingelse +: resources: _*)
(使用前缀 +:
,因为根据 resources
的实施,这可能更有效。)
我是 Scala 的新手,我正在努力提取我的 gatling 测试的公共部分。
exec(
http("Open Page")
.get("/page")
).exec(
http("GET from REST")
.get("/")
.disableFollowRedirect
.resources(
http("x").get("/rest/x/").check(jsonPath("$.x").exists),
http("y").get("/rest/y/").check(jsonPath("$.y").exists)
)
)
我怎样才能做到这一点:
exec(
http("Open Page")
.get("/page")
).exec(
http("GET from REST")
.get("/")
.disableFollowRedirect
.resources(
resources
)
)
val resources = ...???
.resources 签名看起来像这样
def resources(res: HttpRequestBuilder*):
还有一个... 由于我即将统一一些传递的资源值,通常我必须添加一些额外的东西,应该使用什么语法来使下面的代码正确。
exec(
http("Open Page")
.get("/page")
).exec(
http("GET from REST")
.get("/")
.disableFollowRedirect
.resources(
common: _*,
http("z").get("/rest/z/").check(jsonPath("$.z").exists)
)
)
val common: Seq[HttpRequestBuilder] = Seq(
http("x").get("/rest/x/").check(jsonPath("$.x").exists),
http("y").get("/rest/y/").check(jsonPath("$.y").exists)
)
我明白了
exec(
http("Open Page")
.get("/page")
).exec(
http("GET from REST")
.get("/")
.disableFollowRedirect
.resources(
common:+
http("z").get("/rest/z/").check(jsonPath("$.z").exists): _*
)
)
但也许有 "proper" 方法可以做到这一点。
val resources: Seq[HttpRequestBuilder] = ??? // Or subtype
...
// Type ascription, but functionally equivalent to other languages' "splat" operators
.resources(resources: _*)
类型归属是 expr: Type
形式的表达式。这种表达式的类型是 Type
,编译器必须以某种方式使 expr
符合该类型。在这里对可变参数使用它的基本原理是 resources
的参数是 HttpRequestBuilder*
(即使没有这样的类型),所以你可以使用类型归属让编译器解释一个对象键入 Seq[HttpRequestBuilder]
作为 HttpRequestBuilder*
,即使这样的类型实际上并不存在。它使用通配符 _
,因此您不必键入整个类型名称。
编辑:是的,如果您想将资源列表与其他内容合并,然后将其作为可变参数传递,您应该这样做
.resources(somethingelse +: resources: _*)
(使用前缀 +:
,因为根据 resources
的实施,这可能更有效。)