草庐IT

Kotlin-script

全部标签

static-methods - Kotlin 中的静态扩展方法

如何在Kotlin中定义静态扩展方法?这甚至可能吗?我目前有一个扩展方法如下图。publicfunUber.doMagic(context:Context){//...}可以在实例上调用上述扩展。uberInstance.doMagic(context)//Instancemethod但是我如何使它成为如下所示的静态方法。Uber.doMagic(context)//Staticorclassmethod 最佳答案 要实现Uber.doMagic(context),你可以写一个扩展到companionobjectUber的(需要声明

arrays - Kotlin 中列表和数组类型的区别

List和Array类型有什么区别?似乎可以对它们进行相同的操作(循环、过滤器表达式等),在行为或用法上有什么不同吗?valnames1=listOf("Joe","Ben","Thomas")valnames2=arrayOf("Joe","Ben","Thomas")for(nameinnames1)println(name)for(nameinnames2)println(name) 最佳答案 Arrays和列表(由List及其子类型MutableList表示)有很多不同之处,这里是最重要的:Array是一个具有已知实现的类:

arrays - Kotlin 中列表和数组类型的区别

List和Array类型有什么区别?似乎可以对它们进行相同的操作(循环、过滤器表达式等),在行为或用法上有什么不同吗?valnames1=listOf("Joe","Ben","Thomas")valnames2=arrayOf("Joe","Ben","Thomas")for(nameinnames1)println(name)for(nameinnames2)println(name) 最佳答案 Arrays和列表(由List及其子类型MutableList表示)有很多不同之处,这里是最重要的:Array是一个具有已知实现的类:

kotlin - 在 Kotlin 中试用资源

当我试图写一个等效的Javatry-with-resourcesKotlin中的声明,它对我不起作用。我尝试了以下不同的变体:try(writer=OutputStreamWriter(r.getOutputStream())){//...}但两者都不起作用。有谁知道应该改用什么?显然Kotlin语法doesn'tinclude这样的构造,但也许我错过了一些东西。它为tryblock定义语法如下:try:"try"blockcatchBlock*finallyBlock?; 最佳答案 有一个usekotlin-stdlib(src)

kotlin - 在 Kotlin 中试用资源

当我试图写一个等效的Javatry-with-resourcesKotlin中的声明,它对我不起作用。我尝试了以下不同的变体:try(writer=OutputStreamWriter(r.getOutputStream())){//...}但两者都不起作用。有谁知道应该改用什么?显然Kotlin语法doesn'tinclude这样的构造,但也许我错过了一些东西。它为tryblock定义语法如下:try:"try"blockcatchBlock*finallyBlock?; 最佳答案 有一个usekotlin-stdlib(src)

dictionary - 如何在 Kotlin 中将列表转换为 map ?

例如,我有一个字符串列表,例如:vallist=listOf("a","b","c","d")我想将其转换为map,其中字符串是键。我知道我应该使用.toMap()函数,但我不知道如何使用,也没有看到任何示例。 最佳答案 你有两个选择:第一个也是最高效的方法是使用associateBy函数,该函数采用两个lambdas来生成键和值,并内联map的创建:valmap=friends.associateBy({it.facebookId},{it.points})第二个,性能较差,是使用标准的map函数来创建toMap可以使用的Pair

dictionary - 如何在 Kotlin 中将列表转换为 map ?

例如,我有一个字符串列表,例如:vallist=listOf("a","b","c","d")我想将其转换为map,其中字符串是键。我知道我应该使用.toMap()函数,但我不知道如何使用,也没有看到任何示例。 最佳答案 你有两个选择:第一个也是最高效的方法是使用associateBy函数,该函数采用两个lambdas来生成键和值,并内联map的创建:valmap=friends.associateBy({it.facebookId},{it.points})第二个,性能较差,是使用标准的map函数来创建toMap可以使用的Pair

inheritance - 在 Kotlin 中扩展数据类

数据类似乎是Java中老式POJO的替代品。这些类允许继承是可以预料的,但我看不出扩展数据类的方便方法。我需要的是这样的:opendataclassResource(varid:Long=0,varlocation:String="")dataclassBook(varisbn:String):Resource()上面的代码因为component1()方法的冲突而失败。仅将data注释留在其中一个类中也不起作用。也许还有另一种方式来扩展数据类?UPD:我可能只注释子子类,但data注释只处理构造函数中声明的属性。也就是说,我必须声明所有父级的属性open并覆盖它们,这很难看:openc

inheritance - 在 Kotlin 中扩展数据类

数据类似乎是Java中老式POJO的替代品。这些类允许继承是可以预料的,但我看不出扩展数据类的方便方法。我需要的是这样的:opendataclassResource(varid:Long=0,varlocation:String="")dataclassBook(varisbn:String):Resource()上面的代码因为component1()方法的冲突而失败。仅将data注释留在其中一个类中也不起作用。也许还有另一种方式来扩展数据类?UPD:我可能只注释子子类,但data注释只处理构造函数中声明的属性。也就是说,我必须声明所有父级的属性open并覆盖它们,这很难看:openc

kotlin - 如何在 Kotlin 中将 String 转换为 Long?

所以,由于缺乏像Long.valueOf(Strings)这样的方法,我被卡住了。如何在Kotlin中将String转换为Long? 最佳答案 1.string.toLong()Parsesthestringasa[Long]numberandreturnstheresult.@throwsNumberFormatExceptionifthestringisnotavalidrepresentationofanumber.2.string.toLongOrNull()Parsesthestringasa[Long]numberand