草庐IT

Kotlin-script

全部标签

oop - Kotlin - 是否可以在类中的 init block 之前初始化伴随对象?

是否可以在Kotlin类中的initblock之前初始化companionobject?如果是这样,怎么做?如果没有,有没有办法完成同样的事情。我有以下场景,classA(valiname:String){init{foo.add(this)}companionobjectB{@JvmFieldvalSTATIC=A("hi")@JvmFieldvalfoo=mutableListOf()}funprintAllStatics(){for(ainfoo){print(a.iname)}}}调用printAllStatics会导致空指针异常。 最佳答案

oop - Kotlin - 是否可以在类中的 init block 之前初始化伴随对象?

是否可以在Kotlin类中的initblock之前初始化companionobject?如果是这样,怎么做?如果没有,有没有办法完成同样的事情。我有以下场景,classA(valiname:String){init{foo.add(this)}companionobjectB{@JvmFieldvalSTATIC=A("hi")@JvmFieldvalfoo=mutableListOf()}funprintAllStatics(){for(ainfoo){print(a.iname)}}}调用printAllStatics会导致空指针异常。 最佳答案

python - 为什么即使我获得了所需的输出,我仍会收到此错误 "Wrong number of args calling Redis command From Lua script"

我试图执行这个lua脚本,我也得到了正确的输出。但是我不断收到WrongnumberofargscallingRediscommandFromLuascriptdefnew_get_following(self,start,count,user_id=0):script="""localenvs=redis.call('zrevrange',KEYS[1],ARGV[3],ARGV[4]);redis.call('sadd',ARGV[1],unpack(envs));localfavs=redis.call('sinter',ARGV[2],ARGV[1]);localacts=re

json - Moshi + Kotlin + SealedClass

有没有办法使用反序列化jsonsealedclassLayerdataclassShapeLayer(vartype:LayerType):LayerdataclassTextLayer(vartype:LayerType):LayerdataclassImageLayer(vartype:LayerType):LayerLayerType只是一些枚举,可用于区分该对象应具有的类型。我想我可以这样添加适配器:classLayerAdapter{@FromJsonfunfromJson(layerJson:LayerJson):Layer{returnwhen(layerJson.lay

json - Moshi + Kotlin + SealedClass

有没有办法使用反序列化jsonsealedclassLayerdataclassShapeLayer(vartype:LayerType):LayerdataclassTextLayer(vartype:LayerType):LayerdataclassImageLayer(vartype:LayerType):LayerLayerType只是一些枚举,可用于区分该对象应具有的类型。我想我可以这样添加适配器:classLayerAdapter{@FromJsonfunfromJson(layerJson:LayerJson):Layer{returnwhen(layerJson.lay

kotlin - Kotlin 中 Lock.withLock 和 synchronized 的区别

两者之间是否存在差异(除了偏好)someLock.withLock{sharedResource.operation()}和synchronized(someLock){sharedResource.operation()}在Kotlin中? 最佳答案 withLock扩展适用于Lock实例,例如ReentrantLock,而synchronized可用于任何对象。vallock=ReentrantLock()funsyncWithLockTest():Int=lock.withLock{123}valanyLock=Any()fu

kotlin - Kotlin 中 Lock.withLock 和 synchronized 的区别

两者之间是否存在差异(除了偏好)someLock.withLock{sharedResource.operation()}和synchronized(someLock){sharedResource.operation()}在Kotlin中? 最佳答案 withLock扩展适用于Lock实例,例如ReentrantLock,而synchronized可用于任何对象。vallock=ReentrantLock()funsyncWithLockTest():Int=lock.withLock{123}valanyLock=Any()fu

object - 如何将 Kotlin 数据类对象转换为映射?

是否有任何简单的方法或任何标准库方法可以通过属性名称将Kotlin数据类对象转换为其属性的映射/字典?可以避免反射吗? 最佳答案 我使用的是jackson方法,但在Android上首次序列化(githubissuehere)的性能很差。并且对于较旧的android版本来说,情况要糟糕得多,(seebenchmarkshere)但是您可以使用Gson更快地做到这一点。此处显示的双向转换:importcom.google.gson.Gsonimportcom.google.gson.reflect.TypeTokenvalgson=Gs

object - 如何将 Kotlin 数据类对象转换为映射?

是否有任何简单的方法或任何标准库方法可以通过属性名称将Kotlin数据类对象转换为其属性的映射/字典?可以避免反射吗? 最佳答案 我使用的是jackson方法,但在Android上首次序列化(githubissuehere)的性能很差。并且对于较旧的android版本来说,情况要糟糕得多,(seebenchmarkshere)但是您可以使用Gson更快地做到这一点。此处显示的双向转换:importcom.google.gson.Gsonimportcom.google.gson.reflect.TypeTokenvalgson=Gs

Kotlin:密封类不能 "contain"数据类?为什么?

好的,既然Kotlin正式出局了,我又开始玩它了,我很困惑,我需要在sealed和data的优势之间做出选择>但不知何故不能两者兼得。例如,这对我来说似乎有意义,但无法编译:sealedclassExpr{dataclassConst(valnumber:Double):Expr()dataclassSum(valexpr1:Expr,valexpr2:Expr):Expr()}因为数据类不能扩展其他类。我有什么遗漏吗? 最佳答案 在进入Beta状态前不久,Kotlin团队决定对data类的使用添加某些限制(seethispost)