我在Java中有此代码

return mFingerprintManager.hasEnrolledFingerprints() &&
       createKey(DEFAULT_KEY_NAME, true) &&
       initCipher(mCipher, DEFAULT_KEY_NAME);


我已将其转换为Kotlin,如下所示

return mFingerprintManager.hasEnrolledFingerprints() &&
        createKey(DEFAULT_KEY_NAME, true) &&
        if (mCipher != null) {
            mCipher?.apply { initCipher(this, DEFAULT_KEY_NAME) }
            return true
        } else {
            return false
        }


有没有更好的方式编写Kotlin代码,因此更简洁?变量mCipher定义为

private var mCipher: Cipher? = null


在课堂上。

最佳答案

如果接收器不为null,则在可为空的接收器上的?.返回函数的结果,否则为null。

将此与.apply结合在一起,我们可以编写:

[..] && mCipher?.apply { initCipher(this, DEFAULT_KEY_NAME) } != null

10-08 03:05