小编Pri*_*dam的帖子

这是否可能在scala def convert(f :()⇒Future[Int]):Future [()⇒Int] =?

def computeComplexNumber: () ? Future[Int] =
  () ?
    Future {
      println("Computing complex number ...")
      Int.MaxValue
  }

def convert(f: () ? Future[Int]): Future[() ? Int] = ???

convert(computeComplexNumber)
Run Code Online (Sandbox Code Playgroud)

是否可以实现convert具有上述签名的方法,条件是当convert(computeComplexNumber)调用时,除非您这样做,否则不会打印任何内容

Await.result(convert(computeComplexNumber), 5.seconds)()
Run Code Online (Sandbox Code Playgroud)

functional-programming scala future

4
推荐指数
1
解决办法
384
查看次数

是否可以为Kotlin中的内部委托属性提供自定义名称?

我有以下代码片段,我想从同一代码库内部访问scriptDsl属性Java。我不想公开曝光scriptDsl

class ScriptDsl {
    internal val scriptDsl: JScriptDsl by lazy { //... }
}
Run Code Online (Sandbox Code Playgroud)

当编译时,scriptDsl变为,public final JScriptDsl getScriptDsl$esw_ocs_dsl_kt()但我想在此处提供自定义名称,这对于使用的非委托属性是可能的JvmName("scriptDsl")。怎么做呢internal delegated properties

如果还有其他更好的解决方案,我很好,我的要求是“

  • 我想scriptDsl在同一模块中从Java 调用
  • 我用反射来称呼它,所以需要事先知道名字
  • ScriptDsl是公开的,我不希望scriptDsl在模块外部访问属性
  • scriptDsl 必须懒惰,因为它依赖于声明时可能不可用的其他属性

注意:我知道internalKotlin public中的Java。

来自kotlin文档:

内部声明在Java中公开。内部类的成员会经历名称重整,以使其更难从Java中意外使用它们,并允许重载具有相同签名且根据Kotlin规则彼此不可见的成员。

java kotlin

3
推荐指数
1
解决办法
30
查看次数

为什么暂停Kotlin不支持的运算符fun getValue?

为什么跟随签名会Unsupported [suspend operator "getValue"]导致编译错误?

suspend operator fun getValue(thisRef: Any?, property: KProperty<*>): T
Run Code Online (Sandbox Code Playgroud)

是因为技术上的限制吗?

kotlin kotlin-coroutines

1
推荐指数
1
解决办法
71
查看次数