У меня есть метод моста Javascript в Котлине, например,
@JavascriptInterface
fun add(a: Int? = 0, b: Int? = 0): Int {
return a + b
}
Если я хочу вызвать значение по умолчанию, как я могу вызвать этот метод из веб-приложения js?
android.add(null, null) // OR
android.add() // OR
android.add(a = 0, b = 0)// OR
Или что?
@Кобе, что, если я хочу работать для чего-то вроде android.add(b=5)? или только с 1-м параметром, например android.add(1)? они разрешены?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Чтобы использовать значение параметра по умолчанию, undefined необходимо передать в качестве аргумента. Это можно сделать так:
android.add() // empty arguments means all of them are undefined so defaults are used
android.add(1) // a == 1, b == undefined so the default value (0) is used
android.add(void 0, 2) // a == undefined and its default (0) is used, b == 2
Спасибо Роман. Я все еще не понимаю, почему значение по умолчанию предоставляется со стороны js вызывающего абонента? Это уже определено на родной стороне, верно? Вы имели в виду android.add(void 0, 2) ?
Если я правильно вас понял, void 0 — это просто выражение, которое гарантированно будет undefined, когда void не является выражением.
Вы также можете использовать annotation
@JvmOverloads
Это создает перегруженные методы в скомпилированном байт-коде для @JavaScriptInterface.
Вы можете легко вызвать
android.add()
из JS, чтобы вызвать аргументы по умолчанию для вашего метода, все еще сохраняя ваш код идиоматичным.
Если значение не указано, будет использоваться значение по умолчанию, поэтому android.add() будет в порядке.