
176
|
第
11
章
11.6
使一个类可执行
问题
存在一个只包含单个函数的类,如何使这个函数的调用更简单。
解决方案
在类中覆盖 invoke 操作符函数,并调用该函数。
讨论
在 Kotlin 中有很多操作符是可以覆盖的。为此,只需要覆盖与所需的操作符相关的
函数。
Kotlin 参考文档将这称为
操作符重载
,但是概念是相同的。
要实现一个操作符,请提供具有正确名称与参数的成员函数或扩展函数。重载操作符的
任何函数都需要使用 operator 修饰符。
有一种特殊的函数是特殊的:invoke。invoke 操作符函数允许将类的实例视为函数。
例如,考虑一下 Open Notify 提供的免费 RESTful Web 服务(
https://oreil.ly/Bs7vn
), 该
服务返回 JSON 数据,这些数据表示在任何给定时刻的太空宇航员人数。示例 11-16 给
出了返回数据的示例。
示例 11-16:Open Notify 服务返回的 JSON 数据
{
"people": [
{ "name": "Oleg Kononenko", "craft": "ISS" },
{ "name": "David Saint-Jacques", "craft": "ISS" },
{ "name": "Anne McClain", "craft": "ISS" }
],
"number": 3,
"message": "success"
}
响应结果显示,目前有 3 名宇航员正在国际空间站上。