小编use*_*957的帖子

Scala函数文字

  1. val x = (x:Int, y:Int) => (_:Int) + (_:Int)
  2. val y = (_:Int) + (_:Int)

在以上Scala的两个函数文字中,当我调用第一个(例如:x(2,3))时,它没有返回总和。而是返回另一个结果,例如res0。当我调用res0(2,3)时,它返回了我的和。而第二个则在第一个调用中返回答案(例如:y(2,3)给我5)。

有人可以解释一下为什么第一个电话本身没有向我返回总和(即5)。

我在REPL中尝试过。

scala literals

7
推荐指数
1
解决办法
77
查看次数

如何在Scala中将Nil识别为List类中的方法

我有以下代码行在Scala中构造了一个列表。

val oneTwoThree = 1 :: 2 :: 3 :: Nil
Run Code Online (Sandbox Code Playgroud)

据解释说,“你需要的原因Nil,在到底是什么人::是在类中定义List。如果你尝试只是说1 :: 2 :: 3,它不能编译,因为3是Int,其中没有一个::方法。”

但是在代码行中,没有List提到任何类。有人可以帮我了解如何正确调用类中的Nil方法List吗?

scala

3
推荐指数
2
解决办法
54
查看次数

Scala 中的上下文绑定

我正在学习 Scala 中的上下文绑定。

在下面的代码中,我对整数参数调用乘法运算符。但它会出错。'a' 被视为类型参数;但实际上并不符合我的理解。有人可以帮忙吗。

scala> class Sample[T]
defined class Sample

scala> def method[Int:Sample](a:Int) = a * a
<console>:12: error: value * is not a member of type parameter Int
       def method[Int:Sample](a:Int) = a * a
Run Code Online (Sandbox Code Playgroud)

谢谢!

scala context-bound

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

模式匹配未提供预期的结果

根据理解,模式匹配不起作用。

我在课本“ Scala中编程”中阅读了模式匹配的概念。

我有一个模式匹配的定义,如下所示。

def checkMe (a:Any) =  a match {
      case Int => "I am an Integer"
      case Double => "I am a Double"
      case Char => "I am a Charecter"
      case _ => "I am something else"
     }
Run Code Online (Sandbox Code Playgroud)

无论我在调用该函数时传递了什么,总是执行默认情况。

例如:checkMa(100)给出“我是别的东西” checkMe(10。)也给出“我是别的东西”等。

有人可以帮我理解定义中的错误吗。

我希望定义根据我通过的类型执行。

scala pattern-matching

0
推荐指数
1
解决办法
53
查看次数

Scala 中 List 的 flatMap 函数

val l = List(1,2,3)
val f = l flatMap (_ + 1)
Run Code Online (Sandbox Code Playgroud)

我在 Scala 中运行上述代码段,但出现以下错误。

<console>:12: error: type mismatch;
 found   : Int(1)
 required: String
       val f = l flatMap (_ + 1)
Run Code Online (Sandbox Code Playgroud)

是什么flatMap做的是,它进行地图功能,我们提供(在这种情况下- >:_ + 1),然后遍历map函数的结果。如果迭代器在地图输出上不可用,则会引发此错误。

我的理解正确吗?

functional-programming scala list scala-collections flatmap

0
推荐指数
1
解决办法
57
查看次数