我在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
在班级。
答案 0 :(得分:3)
?.
返回函数的结果,否则返回null。
将此与.apply
结合起来我们可以写:
[..] && mCipher?.apply { initCipher(this, DEFAULT_KEY_NAME) } != null
答案 1 :(得分:0)
等等,为什么不能将Java代码复制粘贴到Kotlin?它将按原样运行:
return mFingerprintManager.hasEnrolledFingerprints()
&& createKey(DEFAULT_KEY_NAME, true)
&& initCipher(mCipher, DEFAULT_KEY_NAME)
如果initCipher(...)
可以将null
作为参数处理,那么在将mCipher
传递给方法之前,您无需先检查initCipher
。
<强>更新强>
您似乎已将null
从Java转换为Kotlin,现在它无法接受mCipher
作为其参数。然后,假设您没有!!
的并发访问权限,请在代码中添加null-assertion return mFingerprintManager.hasEnrolledFingerprints()
&& createKey(DEFAULT_KEY_NAME, true)
&& initCipher(mCipher!!, DEFAULT_KEY_NAME)
:
Microsoft.AspNet.OData (6.0.0)