如何在Kotlin中将多个Upper Bounds语法与委托语法结合在一起

亚历山大·贝赞(Oleksandr。

假设我有以下接口:

interface A
interface B
interface C

我想为A和B类型创建具有多个上限的类:

class First<T>(val t: T) where T : A, T : B

我也想对C类型使用委派:

class Second(val c: C) : C by c

我的问题是如何将两者都合并为一个类声明?

我尝试了这个:

class Third<T>(val t: T, val c: C) where T : A, T : B, C by c // syntax error: "Expecting : before the upper bound"

还有这个:

class Third<T>(val t: T, val c: C) : C by c where T : A, T : B // unresolved reference where
zsmb13

通过查看语法,可以很快找出这两件事的顺序,您会看到委托说明符位于类型约束之前:

class 
  : modifiers ("class" | "interface") SimpleName
      typeParameters?
      primaryConstructor?
      (":" annotations delegationSpecifier{","})?
      typeConstraints
      (classBody? | enumClassBody)
  ;

然后,只需要弄清楚如何按顺序执行这些工作即可-事实证明,如果将类型约束放在新行上,则可以正确解析这些内容(如此处和此处文档所示):

class Third<T>(val t: T, val c: C) : C by c
        where T : A, T : B

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在SQL中将另一个条件与多个内部联接结合在一起?

如何将python asyncio与线程结合在一起?

Python Web框架,WSGI和CGI如何结合在一起

如何将PrettyPrintingJsonGeneratorDecorator和MaskingJsonGeneratorDecorator结合在一起?

如何将原位转换和复制转换结合在一起?

SQL将多个表与多个参数结合在一起

如何将“最终形式计算”与“最终形式数组”结合在一起

如何将back_inserter与转换结合在一起,C ++

在PostgreSQL中将CTE与IN结合在一起

我如何在Python中将综合与ordereddict结合在一起?

如何将聚合查询与不同联接结合在一起?

如何将EventEmitter与动态组件结合在一起?

如何将Axios调用循环与等待功能结合在一起?

如何在Kusto中将控制命令与参数化查询结合在一起?

在R中将几个数据框结合在一起

如何在Spark中将STRUCT的所有元素与1000多个元素结合在一起

如何在jq中将更新与函数结果结合在一起?

将多个标签与Google表格中的常用表格结合在一起

如何将数据框总结为与ID结合在一起的列表?

如何将Bash的流程替换与HERE文档结合在一起?

如何将typedef的结构与实例创建结合在一起?

如何使用Elixir将CSS和更少的东西结合在一起?

如何将不同的数组值与通用键结合在一起

如何在Django中将2个模型字段结合在一起?

如何在Java android中将两个函数结合在一起

如何在disp方法中将变量与字符串结合在一起?

如何将5个以上的PDF与imagemagick转换结合在一起?

在Hibernate中将多个结果结合在一起

如何在熊猫中将布尔索引器与多索引结合在一起?