第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在 Kotlin 中維護(hù)這個(gè)復(fù)雜的 if-else 語句

如何在 Kotlin 中維護(hù)這個(gè)復(fù)雜的 if-else 語句

侃侃爾雅 2023-05-10 17:31:08
我寫了一個(gè)函數(shù)來根據(jù)請(qǐng)求參數(shù)從數(shù)據(jù)庫中獲取信息。下面的 if-else 語句是一個(gè)大問題。如果我們繼續(xù)添加更多過濾器,我們需要繼續(xù)為所有可能的路徑添加語句。    fun getMessages(name: String, pageable: Pageable, locale: String?, subject: String?,                              recipient: String?): Page<MessageDTO>? {        val messagePageable= if (!locale.isNullOrEmpty() && !subject.isNullOrEmpty() && !recipient.isNullOrEmpty()) {            messageRepository.findAll(where(hasMessageName(name).and(hasLocale(locale!!)            .and(hasSubject(subject!!).and(hasRecipient(recipient!!))))), pageable)        } else if (!locale.isNullOrEmpty()) {            messageRepository.findAll(where(hasMessageName(name).and(hasLocale(locale!!))), pageable)        } else if (!subject.isNullOrEmpty()) {            messageRepository.findAll(where(hasMessageName(name).and(hasSubject(subject!!))), pageable)        } else {            messageRepository.findAll(where(hasMessageName(name)), pageable)        }        return messagePageable.map { messageMapper.toMessageDTO(it) }.takeIf { it.content.isNotEmpty() }}應(yīng)該有更好的寫法。我感謝您的幫助。
查看完整描述

2 回答

?
慕田峪9158850

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超7個(gè)贊

我不確定,但也許一些重構(gòu)會(huì)有所幫助。例如,您似乎正在對(duì)request數(shù)據(jù)庫使用某種形式,如果根據(jù)參數(shù)進(jìn)行填充,那么也許可以像這樣進(jìn)行管理。


fun getMessages(name: String, pageable: Pageable, locale: String?, subject: String?,

                          recipient: String?): Page<MessageDTO>? {

    val request = where(hasMessageName(name))

    locale?.let{ request.and(hasLocale(it)) }

    subject?.let{ request.and(hasSubject(it)) }

    recipient?.let{ request.and(hasRecipient(it))}


    return messageRepository.findAll(request, pageable)

                            .map { messageMapper.toMessageDTO(it) }

                            .takeIf { it.content.isNotEmpty() }

}

在這里,我不確定.and()方法是如何工作的,所以也許它應(yīng)該是這樣的: request = request.and(...)


查看完整回答
反對(duì) 回復(fù) 2023-05-10
?
慕容森

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊

您可以if用一個(gè)when語句替換您的語句,以便更容易閱讀:

fun getMessages(name: String, pageable: Pageable, locale: String?, subject: String?,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? recipient: String?): Page<MessageDTO>? = when {

? ? !locale.isNullOrEmpty() && !subject.isNullOrEmpty() && !recipient.isNullOrEmpty() ->

? ? ? ? messageRepository.findAll(where(hasMessageName(name).and(hasLocale(locale!!)

? ? ? ? ? ? .and(hasSubject(subject!!).and(hasRecipient(recipient!!))))), pageable)

? ? !locale.isNullOrEmpty() ->

? ? ? ? messageRepository.findAll(where(hasMessageName(name).and(hasLocale(locale!!))), pageable)

? ? !subject.isNullOrEmpty() ->

? ? ? ? messageRepository.findAll(where(hasMessageName(name).and(hasSubject(subject!!))), pageable)

? ? else ->

? ? ? ? messageRepository.findAll(where(hasMessageName(name)), pageable)

}.map { messageMapper.toMessageDTO(it) }.takeIf { it.content.isNotEmpty() }


查看完整回答
反對(duì) 回復(fù) 2023-05-10
  • 2 回答
  • 0 關(guān)注
  • 148 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)