【问题标题】:method type parameter of type[A: Read : Write] [duplicate]类型的方法类型参数[A:读取:写入] [重复]
【发布时间】:2019-12-24 13:59:08
【问题描述】:

在下面的方法定义中

def fixed[A: Read : Write](start: Int, end: Int, align: Alignment = Alignment.Left,
                             padding: Char = ' ', defaultValue: A = null.asInstanceOf[A]): Codec[A]

[A: Read : Write] 是什么意思

【问题讨论】:

  • 我会更担心将null 作为参数的默认值...

标签: scala


【解决方案1】:

这称为 Context BoundScala 2.8 中引入,它是提供 隐式参数 的简写。在您的情况下,这意味着隐式提供了 Read[A]Write[A] 值。

传统上,您可以为 A 类型的 ReadWrite 提供隐式参数:

def fixed[A](some params...)(implicit read: Read[A], write: Write[A]) = ???

但是,同样可以使用上下文绑定来完成,如下所示。但是,您必须使用 implicitly 才能访问隐式值:

def fixed[A : Read : Write](some params...) = {
    val read = implicitly[Read[A]]
    val write = implicitly[Write[A]]
    ...
}

【讨论】:

    猜你喜欢
    • 2017-01-03
    • 2018-11-15
    • 2013-02-03
    • 2012-01-17
    • 1970-01-01
    • 2017-11-22
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多