Mason - 将字符串映射传递给服务调用

Mason - Passing a map of strings to a service call

我正在尝试将字符串映射传递到我从 .mi 文件进行的服务调用。

我正在尝试下面的操作,但它在“;”处给我语法错误。

  my $serviceResult = PI::employee::register::Service->saveAttributes(
          attributesMap => map { ('session-id' => $Session->getSessionId())}
      );

如果我改为尝试

 my $serviceResult = PI::employee::register::Service->saveAttributes(
          attributesMap => map { 'session-id' => $Session->getSessionId()}
      );

它说地图的参数不足。 :(

Perl 的 map 函数,如 perldoc -f map 中所述,接受一个 BLOCK(或 EXPR)和一个 LIST。您没有提供 LIST,因此您的代码无法编译。

您可以通过提供列表来消除解析错误:

map { ('session-id' => $Session->getSessionId()) } (1)

但这几乎肯定不是您想要的。您错误地使用了 map。您想要一个从键到值的映射,这不是 map 函数的用途。

而不是对 map 的调用,看起来您需要像

这样的哈希引用

{ 'session-id' => $Session->getSessionId() }

.