kotlin - 是什么让 Kotlin 中的 String 类能够使用方括号?

标签 kotlin operator-overloading indices

在 Kotlin 中你可以这样做:

val s: String = "Hey"
println(s[1])

或者简单地说:

println("Hey"[1])

然后你会打印出e .

但是如果您想将此行为扩展到您自己的类中怎么办?您需要实现什么接口(interface)来完成此语法?

我看了String的父类(super class)型,只找到 Comparable<String>CharSequence ,它们本身都没有任何其他父类(super class)型,所以我的任务提前结束了。

例如在 Python 中,通过定义一个名为 __getitem__ 的方法在类中,您可以赋予该类的对象使用方括号语法的能力,例如 a[i] ;我想知道这在 Kotlin 中是如何实现的。

提前致谢。

最佳答案

您可以使用 Kotlin 的运算符重载,特别是 indexed access operators 的重载.

语法 "Hey"[1] 只是 "Hey".get(1) 的别名(如果不在赋值的左侧,它将是 "Hey".set(1, ...)) 的别名。

关于kotlin - 是什么让 Kotlin 中的 String 类能够使用方括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71824484/

相关文章:

c++ - 为什么运算符有时是独立的,有时是类方法?

python - 在 python 中找到特定值矩阵的索引 x,y

java - 在 GUI 构建器中找到的对齐准则/对齐算法

android - 如何从任务中删除监听器?

java - 在 Kotlin 中装饰方法集的惯用方法是什么

c++ - 在运算符重载中返回 this 或 *this ?

kotlin - kotlin中Nothing类型的推理

c++ - 为模板类重载比较运算符

python - 用 Python 列表中的值交换索引?

SQL Server - 在多个表的查询上创建索引?