【问题标题】:Mason - Passing a map of strings to a service callMason - 将字符串映射传递给服务调用
【发布时间】:2015-11-21 10:32:42
【问题描述】:

我正在尝试将字符串映射传递给我从 .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()}
      );

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

【问题讨论】:

  • 这似乎与梅森无关。相反,它似乎是关于如何正确使用您的 PI::employee::register::Service 类。 (更不用说map。)我们不会知道它的 API 应该是什么。
  • 这只是关于 mason .. PI 只是指我用来访问服务的 perl 客户端。
  • 我遇到了一个 mason 语法错误 .. 现在对你有意义吗
  • 您正在报告解析错误。因为你没有产生有效的 Perl。梅森不是你的问题。

标签: perl dictionary mason


【解决方案1】:

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

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

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

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

看起来你需要一个类似的 hashref,而不是调用 map

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

.

【讨论】:

  • 函数接受三个参数 - String, String, Map
  • 所以很明显attributesMap => map { 'session-id' => $Session->getSessionId()} (1)不可能是正确的。
  • 所以请建议..我应该如何通过地图。 :( .. 我要做的就是传递一个带有键“session-id”和值 $Session->getSessionId() 的映射
  • 我已经更新了答案,以反映我对您正在调用的 API 的了解。
猜你喜欢
  • 1970-01-01
  • 2013-02-06
  • 2012-04-10
  • 2016-05-29
  • 2022-07-27
  • 2011-08-07
  • 2015-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多