我如何簡化這個 if else 陳述句以減少代碼重復?如您所見,變數 uri 只分配了 1 個引數更改。
var uri: String?
if (otfText.isNullOrEmpty()) {
uri = StickerFileManager.checkIfStickerCreated(
sticker,
head,
sticker.translatedOTFText
)
if (uri.isNullOrEmpty()) {
ResourceDownloadManager.downloadResource(sticker)
uri = StickerCreator().createStickerWith(
sticker,
head,
sticker.translatedOTFText
)
}
} else {
uri = StickerFileManager.checkIfStickerCreated(
sticker,
head,
otfText
)
if (uri.isNullOrEmpty()) {
ResourceDownloadManager.downloadResource(sticker)
uri = StickerCreator().createStickerWith(
sticker,
head,
otfText
)
}
}
uj5u.com熱心網友回復:
這是一種方法。如果它只是 null 而不是你應該使用otfText ?: sticker.translatedOTFText如果它是 nullOrEmpty 那么下面的方法可以使用
uri = StickerFileManager.checkIfStickerCreated(
sticker,
head,
if (otfText.isNullOrEmpty()) sticker.translatedOTFText else otfText)
if (uri.isNullOrEmpty()) {
ResourceDownloadManager.downloadResource(sticker)
uri = StickerCreator().createStickerWith(
sticker,
head,
if (otfText.isNullOrEmpty()) sticker.translatedOTFText else otfText
)
}
uj5u.com熱心網友回復:
我會這樣做
var text = if (otfText.isNullOrEmpty()) sticker.translatedOTFText else otfText
var uri = StickerFileManager.checkIfStickerCreated(
sticker,
head,
text
)
if (uri.isNullOrEmpty()) {
ResourceDownloadManager.downloadResource(sticker)
uri = StickerCreator().createStickerWith(
sticker,
head,
text
)
}
它與Shahnawaz 的回答非常相似,但我認為最好避免進行兩次相同的檢查,因此我將結果保存在text變數中并在兩個位置使用該結果。
uj5u.com熱心網友回復:
像這樣嘗試
var uri = StickerFileManager.checkIfStickerCreated(
sticker,
head,
if (otfText.isNullOrEmpty()) sticker.translatedOTFText else otfText
)
if (uri.isNullOrEmpty()) {
ResourceDownloadManager.downloadResource(sticker)
uri = StickerCreator().createStickerWith(
sticker,
head,
if (otfText.isNullOrEmpty()) sticker.translatedOTFText else otfText
)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/400837.html
