Могу ли я получить доступ к "вмещающему" объекту для встроенного вызова функции в Kotlin?

EvenLisle спросил: 14 ноября 2017 в 06:50 в: kotlin

Идея: создать встроенную удобную функцию для синхронизации вызова функции с внутренней блокировкой объекта "inlining":

public inline fun <T> intrinsicSync(block: () -> T): T {
    return synchronized(intrinsicLockOfTheObjectUsingTheFunction) {
        block()
    }
}fun someFunction(parameter: SomeClass) {
    intrinsicSync(sharedResource.operation(parameter))
}

Возможно ли это? Если нет, есть ли другой, но одинаково удобный способ? Я признаю, что

fun someFunction(parameter: SomeClass) {
    synchronized(this) {
        sharedResource.operation(parameter)
    }
}

не самая большая проблема в мире, но я все же хотел бы знать, возможно ли сделать что-то похожее на то, что я себе представлял.

0 ответов