问题标签 [scala-placeholder-syntax]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2810 浏览

scala - 命名参数中的下划线

有人可以解释一下这里到底发生了什么吗?我现在还没有完全进入它:

我猜编译器无法推断参数类型,因为我写了参数的名称。但为什么不呢?不应该仅仅因为陈述论点的名称而变得更加困难吗?!

谢谢!

0 投票
1 回答
3606 浏览

scala - Scala 下划线用于简化函数字面量的语法

我有以下代码:

我试图将最后一句话简化为:

但是口译员说:

我试图更明确地说明类型:

编译器和我彼此不理解:(

此致,

斯坦

0 投票
1 回答
42088 浏览

scala - Scala下划线 - 错误:缺少扩展函数的参数类型

我知道对此有很多问题,但我创建了一个我认为应该可以工作的简单示例,但仍然没有,我不确定我是否理解为什么

有人可以解释为什么第二个语句无法编译吗?

0 投票
4 回答
200 浏览

scala - 下划线导致困难

我有以下代码,它应该搜索一个数组并查看是否有任何内容与第二个参数匹配。

它应该是这样调用的: any(Set(3, 4, 5, 6), _ > 5)

但是当我调用它时:

我对函数式语言和 Scala 的经验很少,所以,请给我一个关于正在发生的事情以及如何解决它的彻底解释!

0 投票
3 回答
125 浏览

scala - scala中下划线的归属分组

我正在尝试做:

MyObject.myMethod(_:MyType.myAttribute)

这失败了

type myAttribute is not a member of object MyObject

哪个是对的。问题是我想调用myMethodmyAttribute,而_:MyType不是归于。我可以以某种方式对类型归属进行分组吗?返回 type ,这不是我想要的。MyType:myAttribute__:MyType(_:MyType).myAttributeMyType => classOf(myAttribute)

编辑:我更改了这篇文章的标题和文本,不再将其称为点的关联性,我认为这是不正确的。

0 投票
1 回答
135 浏览

scala - 我发现 Scala 的下划线不一致

这有效:(1 to 5).reduceLeft( _+_ )

但这不是:(x:Int,y:Int)=>_+_

这是不一致的,因为在第一种情况下,匿名函数 ( _+_) 编译成功,但在第二种情况下失败。

有什么我错过或误解的吗?还是只是语法定义?

0 投票
1 回答
979 浏览

scala - 使用 Scala 在 List.map 中的下划线和字符串连接

Scala 允许你使用下划线来做一个简单的映射。因此,例如,而不是写:

...我可以改为:

但是由于某种原因我不能写:

相反,我必须写:

谁能解释为什么?

0 投票
2 回答
1445 浏览

scala - 管理下划线以定义匿名函数的规则是什么?

_用作创建匿名函数的占位符,问题是我无法预测 Scala 将如何转换我的代码。更准确地说,它错误地确定了我想要的匿名函数有多“大”。

使用-Xprint:typer我可以看到 Scala 将第一个转换为“一个大的匿名函数”:

工作的第 2 次第 3 次正确转变为我想要的。

为什么这个?有什么规律?

0 投票
1 回答
144 浏览

scala - 在 Scala 中,使用下划线创建闭包的规则是什么?

起初我认为使用下划线来制作闭包(例如println _)只是使用箭头(例如x => println x)的简写,但我最近才知道您还可以执行以下操作:

鉴于我过去的假设,f _看起来像一个闭包,它只接受一个参数并将一个参数传递给f. 我以为它会告诉我它无法编译,因为f需要两个参数,并且reduce应该需要一个带有两个参数的函数。但它就像我写的那样工作:

这里发生了什么?用下划线创建闭包的规则是什么?

0 投票
0 回答
2078 浏览

scala - Scala下划线:错误:缺少扩展函数的参数类型

我最近开始学习 scala,我对下划线的工作方式有点困惑。虽然它在大多数情况下为您提供了方便的匿名方法,但有时它只会让编译器(和我)感到困惑。

例如,

这有效

和这个

但不是这个

论坛里问了几个类似的案例(也就是这个),大部分都说是扩展成这样的匿名函数x => randomList.groupBy(x)。我只是不知道为什么编译器知道如何编译第二种情况而不是第三种情况。另外,有没有办法在不编写显式函数的情况下解决最后一种情况?