2015-02-09 2 views
1

Я работаю с сторонней библиотекой из Котлина, и одна из вещей, которую я должен сделать, это позвонить delete thing[key], чтобы удалить предмет из вещи. Я не могу понять, как это сделать из кода Котлина.Как вы клоните JavaScript из Kotlin?

Я попробовал js("delete thing[key]"), но вещь является параметром функции и обрабатывается компилятором Kotlin> JavaScript, поэтому при выполнении строки генерируется исключение. Я также попробовал js("delete ") thing[key], но неудивительно, что это тоже не сработало.

ответ

4

delete Для оператора Вы можете написать:

external fun delete(p: dynamic): Boolean = noImpl 
//... 
delete(thing[key]) 

Для более удобного использования я добавил несколько помощников:

fun delete(thing: dynamic, key: String) { 
    delete(thing[key]) 
} 

// or 
fun String.deleteFrom(d: dynamic) { 
    delete(d[this]) 
} 

fun test(a: Any, k: String) { 
    delete(a, k) 
    k.deleteFrom(a) 
    k deleteFrom a 
} 

Примечание: с помощью удаления оператора не является хорошей практикой, и это ll приводит к деоптимизациям в JS VM