小编Rea*_*ame的帖子

找到两个Scala类型的最常见子类型

根据这个问题,我试图找到一种方法让Scala编译器推断两种类型A和B的最大公共子类型.

类似"A without B"的东西,其定义是:

(A without B = C) === (A = C with B)
Run Code Online (Sandbox Code Playgroud)

或者返回C的类型函数,其中:

编辑:

A <: C && C <:!< B
Run Code Online (Sandbox Code Playgroud)

即.A是C的子类型,C不是B的子类型

事实上,我希望有人会指出这与"最常见的子类型"不同,因为我实际上并不需要这样做A <: B.

用法:

trait Syntax

trait ANYSYNTAX extends Syntax
trait NUMERIC extends ANYSYNTAX
trait DISCRETE extends ANYSYNTAX
trait POSITIVE extends ANYSYNTAX
trait CONST extends ANYSYNTAX     
type NUMCONST = NUMERIC with CONST
type POSCONST = POSITIVE with CONST
type ORDINALCONST = DISCRETE with CONST
type INTEGER = NUMERIC with DISCRETE
type …
Run Code Online (Sandbox Code Playgroud)

scala type-constraints

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

标签 统计

scala ×1

type-constraints ×1