gpt4 book ai didi

kotlin - 如果第一个参数为true,则必须在函数中传递第二个参数

转载 作者:行者123 更新时间:2023-12-02 13:01:49 25 4
gpt4 key购买 nike

我有自定义的Kotlin函数:

fun getActiveCartTest(isAsync: Boolean = false, vararg callback: Callback<Cart> ): TransportResponse? {
...
}

它具有一个 默认参数( isAsync)和一个 可选( vararg)回调参数。
我可以像这样从Java调用此函数:
1.  TransportResponse transportResponse = TransportService.INSTANCE.getActiveCartTest();
2. TransportResponse transportResponse = TransportService.INSTANCE.getActiveCartTest(false);
3. TransportResponse transportResponse = TransportService.INSTANCE.getActiveCartTest(true);
4. TransportService.INSTANCE.getActiveCartTest(true, new DefaultRestClientCallback<Cart>() {
@Override
public void onTransportResponse(@NotNull TransportResponse transportResponse) {

}
});

很好,可以。
但是,当我使用此调用时:
TransportResponse transportResponse = TransportService.INSTANCE.getActiveCartTest(true);

我收到一个编译错误。

我的意思是。当客户想要调用 异​​步函数 getActiveCartTest的调用时,它 必须使用两个参数: isAsync callback

如您在我的函数 getActiveCartTest中看到的,客户端可以省略第二个参数( callback)。不对

我需要第一个参数 isAsync = true,那么用户 也必须传递第二个参数回调。如果是第一个参数 isAsync = false,那么用户可以省略第二个参数( callback)

在 Kotlin 有可能吗?

最佳答案

与其尝试使任何人都无法理解的代码,不如将函数划分为getActiveCartTestSyncgetActiveCartTestAsync。您可以通过使用反射来实现所需的功能,但是您会在没有任何理由的情况下使代码复杂得多。

关于kotlin - 如果第一个参数为true,则必须在函数中传递第二个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57884411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com