草庐IT

Kotlin-script

全部标签

Kotlin : Public get private set var

在kotlin中定义具有公共(public)getter和私有(private)(只能在内部修改)setter的var的正确方法是什么? 最佳答案 varsetterVisibility:String="abc"//Initializerrequired,notanullabletypeprivateset//thesetterisprivateandhasthedefaultimplementation见:PropertiesGetterandSetter 关于Kotlin:Publi

loops - Kotlin 中 `break` 中的 `continue` 和 `forEach`

Kotlin有非常好的迭代函数,例如forEach或repeat,但我无法使break和continue运算符(operator)使用它们(本地和非本地):repeat(5){break}(1..5).forEach{continue@forEach}我们的目标是用尽可能接近的函数语法来模拟通常的循环。在某些旧版本的Kotlin中绝对可以,但我很难重现语法。问题可能是标签(M12)的错误,但我认为第一个示例应该可以正常工作。在我看来,我在某个地方读到了一个特殊的技巧/注释,但我找不到关于这个主题的任何引用资料。可能如下所示:publicinlinefunrepeat(times:Int

loops - Kotlin 中 `break` 中的 `continue` 和 `forEach`

Kotlin有非常好的迭代函数,例如forEach或repeat,但我无法使break和continue运算符(operator)使用它们(本地和非本地):repeat(5){break}(1..5).forEach{continue@forEach}我们的目标是用尽可能接近的函数语法来模拟通常的循环。在某些旧版本的Kotlin中绝对可以,但我很难重现语法。问题可能是标签(M12)的错误,但我认为第一个示例应该可以正常工作。在我看来,我在某个地方读到了一个特殊的技巧/注释,但我找不到关于这个主题的任何引用资料。可能如下所示:publicinlinefunrepeat(times:Int

function - 何时在 Kotlin 中使用内联函数?

我知道内联函数可能会提高性能并导致生成的代码增长,但我不确定何时使用它是正确的。lock(l){foo()}Insteadofcreatingafunctionobjectfortheparameterandgeneratingacall,thecompilercouldemitthefollowingcode.(Source)l.lock()try{foo()}finally{l.unlock()}但是我发现kotlin没有为非内联函数创建函数对象。为什么?/**non-inlinefunction**/funlock(lock:Lock,block:()->Unit){lock.l

function - 何时在 Kotlin 中使用内联函数?

我知道内联函数可能会提高性能并导致生成的代码增长,但我不确定何时使用它是正确的。lock(l){foo()}Insteadofcreatingafunctionobjectfortheparameterandgeneratingacall,thecompilercouldemitthefollowingcode.(Source)l.lock()try{foo()}finally{l.unlock()}但是我发现kotlin没有为非内联函数创建函数对象。为什么?/**non-inlinefunction**/funlock(lock:Lock,block:()->Unit){lock.l

inputstream - 在 Kotlin 中,如何将 InputStream 的全部内容读入字符串?

我最近在Kotlin中看到了将InputStream的全部内容读入String的代码,例如://inputisoftypeInputStreamvalbaos=ByteArrayOutputStream()input.use{it.copyTo(baos)}valinputAsString=baos.toString()还有:valreader=BufferedReader(InputStreamReader(input))try{valresults=StringBuilder()while(true){valline=reader.readLine()if(line==null)b

inputstream - 在 Kotlin 中,如何将 InputStream 的全部内容读入字符串?

我最近在Kotlin中看到了将InputStream的全部内容读入String的代码,例如://inputisoftypeInputStreamvalbaos=ByteArrayOutputStream()input.use{it.copyTo(baos)}valinputAsString=baos.toString()还有:valreader=BufferedReader(InputStreamReader(input))try{valresults=StringBuilder()while(true){valline=reader.readLine()if(line==null)b

enums - Kotlin 中具有反向查找的有效枚举?

我正在尝试找到对Kotlin中的枚举进行“反向查找”的最佳方法。我从EffectiveJava中得到的一个收获是,您在枚举中引入了一个静态映射来处理反向查找。用一个简单的枚举将它移植到Kotlin会导致我的代码看起来像这样:enumclassType(valvalue:Int){A(1),B(2),C(3);companionobject{valmap:MutableMap=HashMap()init{for(iinType.values()){map[i.value]=i}}funfromInt(type:Int?):Type?{returnmap[type]}}}我的问题是,这是最

enums - Kotlin 中具有反向查找的有效枚举?

我正在尝试找到对Kotlin中的枚举进行“反向查找”的最佳方法。我从EffectiveJava中得到的一个收获是,您在枚举中引入了一个静态映射来处理反向查找。用一个简单的枚举将它移植到Kotlin会导致我的代码看起来像这样:enumclassType(valvalue:Int){A(1),B(2),C(3);companionobject{valmap:MutableMap=HashMap()init{for(iinType.values()){map[i.value]=i}}funfromInt(type:Int?):Type?{returnmap[type]}}}我的问题是,这是最

generics - 如何在 Kotlin 中将 TypeToken + 泛型与 Gson 一起使用

我无法从自定义类(Turns)中获取泛型类型列表:valturnsType=TypeToken>(){}.typevalturns=Gson().fromJson(pref.turns,turnsType)它说:cannotaccess''itis'public/*package*/'in'TypeToken' 最佳答案 创建这个内联乐趣:inlinefunGson.fromJson(json:String)=fromJson(json,object:TypeToken(){}.type)然后就可以这样调用了:valturns=Gs