【问题标题】:Sample scala higher-order function explaination示例 scala 高阶函数解释
【发布时间】:2016-06-27 00:30:29
【问题描述】:
object Demo {
     def main(args: Array[String]) {
          println( apply( layout, 10) )
     }

     def apply(f: Int => String, v: Int) = f(v)

     def layout[A](x: A) = "[" + x.toString() + "]"
}

我是 Scala 新手,对上面的代码有点困惑。

据我了解,apply 采用另一个函数和一个整数作为输入。 并将整数v 传递给函数f 作为其输入参数。 layout[A] 在这里是什么意思?

【问题讨论】:

    标签: scala


    【解决方案1】:

    语法

    def layout[A](x:A)
    

    声明一个新的泛型函数。在这种情况下,函数 layout 在其唯一的参数中是通用的,因此您可以在任何值上调用 layout,这将是合法的 Scala。

    在 Java 中,这将被写为某个类的方法,但语法类似:

    String layout<A>(A x)
    

    Twitter's Scala school has a good explanation 了解如何在 Scala 中使用类型。

    【讨论】:

      【解决方案2】:

      称为类型参数。

      如果你写def f(x: Int) = ....,编译器现在知道下面所有对x的引用都将涉及一些整数值。

      如果你写def f(x: A) = ....,编译器会报错,“A?A是什么?我不知道A是什么!”

      如果你写def f[A](x: A) = ....,编译器知道x的真实类型会在f被调用时提供,或者可以从上下文中推断出来。

      【讨论】:

      • 我现在明白了。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-10
      • 2021-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多