У меня есть вопрос о производительности помещения типа функции в качестве значений в HashMap .
Я видел, как код моего коллеги пишется так:
var mHandleMap = HashMap<String, (WebView,String) -> Unit >()
fun init() {
mHandleMap.put(URL1, doSomething1)
mHandleMap.put(URL2, doSomething2)
mHandleMap.put(URL3, doSomething3)
override fun onPageFinished(webView: WebView, url: String) {
mHandleMap.forEach { (key, urlFunc) ->
if (urlStr.contains(key)) {
urlFunc(webView)
}
}
}
...
}
private val doSomething1: (WebView) -> Unit = {
...
}
private val doSomething2: (WebView) -> Unit = {
...
}
private val doSomething3: (WebView) -> Unit = {
...
}
Если бы это был я, мой код может выглядеть следующим образом, этот вид кода будет для меня более интуитивно понятным:
val url = request!!.url.toString()
when {
url.contains(URL1) -> doSomething1()
url.contains(URL2) -> doSomething2()
url.contains(URL3) -> doSomething3()
}
Его код выглядит действительно модно, но я волновалсяо, если есть какие-либо проблемы внутри.
Может ли кто-нибудь помочь мне указать, является ли это хорошим способом сделать это или нет?