gpt4 book ai didi

Scala - 为什么 dotless 不适用于这种情况

转载 作者:行者123 更新时间:2023-12-01 09:59:27 25 4
gpt4 key购买 nike

我正在解析一些 XML,并且我正在链接没有点的调用。所有这些方法都不带参数(\\ 除外,它带一个参数),所以应该很可能不用点将它们链接起来,对吧?

这是不起作用的代码:

val angle = filteredContextAttributes.head\\"contextValue"text toDouble

错误是:not found: value toDouble

但是,它确实是这样工作的:

(filteredContextAttributes.head\\"contextValue"text) toDouble

text 只返回一个 String 并且不接受参数,而且我没有看到 \\ 中需要任何其他参数来导致一个问题。

我错过了什么?我不想破解它,而是想了解问题所在。

而且我不能使用没有点的head。删除点时显示:Cannot resolve symbol head

最佳答案

这是因为 text 是一个 postfix 表示法 - 这意味着方法跟在对象之后并且不带参数。 postfix 的技巧是它只能出现在 end 表达式中。这就是为什么当你添加括号时它起作用(表达式然后被括号包围并且你得到两个后缀符号,一个以 text 结尾,第二个以 toDouble 结尾) .在您的示例中,情况并非如此,因为您正试图进一步调用链中的方法。

这也是您需要执行 filteredContextAttributes.head 而不是 filteredContextAttributes head 的原因。我敢肯定,如果您执行 (filteredContextAttributes head),它将再次起作用,因为后缀表示法将位于表达式的末尾!

Scala 中也有 prefixinfix 符号,我建议您阅读它们以了解何时可以跳过 ()(例如为什么在使用 map 方法时需要 () 等)。

关于Scala - 为什么 dotless 不适用于这种情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31809456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com