微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

理解 Kotlin 中的这段代码

如何解决理解 Kotlin 中的这段代码

我正在 android studio 中使用用于 BLE 的北欧库。我从他们的文档中将这段 java 代码复制到 kotlin 中。然而,kotlin 等价物对我来说有点难以理解。我以前从未见过这样的语法。我还在 dataCharacteristicCallback 和 dataRead 上收到了一些警告信号,我不知道如何调试。尤其是函数声明中的“dataCharacteristicCallback = object”真的让我感到困惑。我觉得这是一个 lambda 表达式或函数作为一等公民的应用程序,android studio 的 java 到 kotlin 的转换在这里可能有点不精确。

这里是原始的 java 位。

private final BlinkyButtonDataCallback buttonCallback = new BlinkyButtonDataCallback() {
        @Override
        public void onButtonStateChanged(@NonNull final BluetoothDevice device,final boolean pressed) {
            log(LogContract.Log.Level.APPLICATION,"Button " + (pressed ? "pressed" : "released"));
            buttonState.setValue(pressed);
        }

        @Override
        public void onInvalidDataReceived(@NonNull final BluetoothDevice device,@NonNull final Data data) {
            log(Log.WARN,"Invalid data received: " + data);
        }
    };

这里是 kotlin 等效项

        private val dataRead: dataCharacteristicCallback = object : dataRead() {
            fun onButtonStateChanged(device: BluetoothDevice,pressed: Boolean) {
                log(LogContract.Log.Level.APPLICATION,"Button " + if (pressed) "pressed" else "released")
                buttonState.setValue(pressed)
            }

            fun onInvalidDataReceived(device: BluetoothDevice,data: Data) {
                log(Log.WARN,"Invalid data received: $data")
            }
        }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。