相关疑难解决方法(0)

Scala强调最小功能

让我们为这个问题创建一个值:

val a = 1 :: Nil
Run Code Online (Sandbox Code Playgroud)

现在,我可以证明匿名函数可以用这样的简写形式编写:

a.map(_*2)
Run Code Online (Sandbox Code Playgroud)

是否有可能写出这个功能的简写?:

a.map((x) => x)
Run Code Online (Sandbox Code Playgroud)

我的解决方案不起作用:

a.map(_)
Run Code Online (Sandbox Code Playgroud)

scala anonymous-function

23
推荐指数
3
解决办法
5756
查看次数

List.filter中的下划线

为什么这不起作用:

List(true,false).filter(_).size
Run Code Online (Sandbox Code Playgroud)

错误说:

<console>:8: error: missing parameter type for expanded function 
((x$1) => List(true, false).filter(x$1).size)
    List(true,false).filter(_).size
                            ^
Run Code Online (Sandbox Code Playgroud)

但以下作品(对我来说看起来一样):

List(true,false).filter(a => a).size
Run Code Online (Sandbox Code Playgroud)

我正在使用Scala 2.9.0.1.

scala

9
推荐指数
1
解决办法
2219
查看次数

单个arg匿名函数(避免下划线)的简明表示法不能按预期工作

在网上看了一些例子之后,我意识到只有一个arg时,有一种方法可以编写一个没有下划线的匿名函数.另外,我正在试验List上的"span"方法,我从来不知道它存在.无论如何,这是我的REPL会议:

scala> val nums = List(1, 2, 3, 4, 5)
nums: List[Int] = List(1, 2, 3, 4, 5)

scala> nums span (_ != 3)
res0: (List[Int], List[Int]) = (List(1, 2),List(3, 4, 5))

scala> nums span (3 !=)
res1: (List[Int], List[Int]) = (List(1, 2),List(3, 4, 5))
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.但是当我尝试使用"小于"运算符时:

scala> nums span (_ < 3)
res2: (List[Int], List[Int]) = (List(1, 2),List(3, 4, 5))

scala> nums span (3 <)
res3: (List[Int], List[Int]) = (List(),List(1, 2, 3, 4, 5))
Run Code Online (Sandbox Code Playgroud)

为什么这表现不同?

scala

3
推荐指数
1
解决办法
788
查看次数

标签 统计

scala ×3

anonymous-function ×1