Как правильно обрабатывать универсальные типы?

Вам нужно вызвать глобальную переменную, чтобы убедиться, что она получает правильные значения.

Если вы добавите

 global $woocommerce;

непосредственно перед

 $amount2 = floatval( preg_replace( '#[^\d.]#', '', $woocommerce->cart->get_cart_total() ) );

, который должен решить вашу проблему.

1
задан dotGitignore 2 March 2019 в 03:05
поделиться

1 ответ

Вы должны использовать проекции звезд только в том случае, если вы не знаете конкретный параметр типа для универсального типа. Когда вы используете их, компилятор не позволит вам делать небезопасные действия с параметризованным типом. Например, вы видели, что не можете передать какой-либо параметр в onSuccess, так как вы по существу сказали компилятору, что не знаете, каким должен быть его тип.

Тогда исправление заключается в том, чтобы вместо функции createRequest задать параметр типа, и сделать как Observable того же типа, так и обратный вызов, который вы хотите вызвать:

fun <T> createRequest(source: Observable<T>, callback: ResponseCallback<T>) {
    ...
    callback.onSuccess(it) // works, since you're passing in a T to a method that requires a T
    ...
}
0
ответ дан zsmb13 2 March 2019 в 03:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: