首页 > 解决方案 > Kotlin,如果函数中使用了默认参数,我可以得到吗?

问题描述

我想知道是否使用了默认参数。就像是:

private fun createVideo(path: Url = DEFAULT_PATH, width: Int = 0, height: Int = 0) {
    if (path is default value) {
        // it means caller didn't set path
        return AVideo()
    else {
        return BVideo()
    }
}

我正在使用效率低下的函数重载来处理这个问题。

编辑:这是我的真实代码

  private fun createMediaItemMock(mediaType: Int,
                                    width: Int = WIDTH_2K,
                                    height: Int = HEIGHT_2K,
                                    trimmingDataCan: Boolean) = mock<PickerMediaItem> {
        on { it.mediaType } doReturn mediaType
        it.width = width
        it.height = height
        it.trimmingData = mock {
            on { can() } doReturn trimmingDataCan
        }
    }

    private fun createMediaItemMock(mediaType: Int,
                                    width: Int = WIDTH_2K,
                                    height: Int = HEIGHT_2K) = mock<PickerMediaItem> {
        on { it.mediaType } doReturn mediaType
        it.width = width
        it.height = height
    }

标签: kotlin

解决方案


你可以只检查是否path.equals(DEFAULT_PATH). 另外,如果您是return AVideo()return BVideo()

private fun createVideo(path: Url = DEFAULT_PATH, width: Int = 0, height: Int = 0): ReturnVideoType {
    if (path is default value) {
        // it means caller didn't set path
        return AVideo()
    else {
        return BVideo()
    }
}

推荐阅读