代码之家  ›  专栏  ›  技术社区  ›  Daniel San

为什么?列表.填充方法有两组参数而不是一组?

  •  1
  • Daniel San  · 技术社区  · 8 年前

    背后的原因是什么列表.填充是用两组参数定义的,而不是用n和elem参数一起定义的

    当前定义

    def fill[A](n: Int)(elem: ⇒ A): CC[A]
    

    def fill[A](n: Int, elem: ⇒ A): CC[A]
    

    这不是不必要的样板吗?或者它是为了使用第一部分( List.fill(n)

    1 回复  |  直到 8 年前
        1
  •  3
  •   Andrey Tyukin    8 年前

    你可以写

    List.fill(10){ val r = math.random; r * r }
    

    但你不能写

    List.fill(10, r = math.random; r * r)
    

    和

    List.fill(10, {r = math.random; r * r})
    

    看起来有点尴尬。

    def map[X, Y](a: F[X])(f: X => Y): F[Y]
    

    在大多数情况下,在没有任何类型注释的情况下工作得非常好,但是

    def map[X, Y](a: F[X], f: X => Y): F[Y]
    

    ap , ap2 或 map2 in this piece of code ,例如。参数列表之所以如此,有一个很好的原因,如果它们的定义不同,您会立即注意到这一点。

    推荐文章