草庐IT

Kotlin-script

全部标签

constructor - 如何在 Kotlin 中扩展具有多个构造函数的类?

我正在学习Kotlin,遇到了一个我无法解决的问题。我想在Kotlin中扩展Java类RuntimeException并能够在不同的情况下使用它的三个构造函数中的任何一个(基于我当时想要抛出异常的信息))。在java中,我的类看起来像这样:publicclassPhotoLibExceptionextendsRuntimeException{publicPhotoLibException(Stringmessage,RuntimeExceptionex){super(message,ex);}publicPhotoLibException(Stringmessage){super(me

android - 如何在 Android 上使用 Kotlin 显示 Toast?

在Android的不同Kotlin示例中,我看到toast("Somemessage...")或toastLong("Somelongmessage")。例如:view.setOnClickListener{toast("Click")}据我了解,它是Activity的扩展函数。您如何以及在何处定义此toast()函数,以便您能够在整个项目中使用它? 最佳答案 可以是Context的扩展函数:funContext.toast(message:CharSequence)=Toast.makeText(this,message,Toas

android - 如何在 Android 上使用 Kotlin 显示 Toast?

在Android的不同Kotlin示例中,我看到toast("Somemessage...")或toastLong("Somelongmessage")。例如:view.setOnClickListener{toast("Click")}据我了解,它是Activity的扩展函数。您如何以及在何处定义此toast()函数,以便您能够在整个项目中使用它? 最佳答案 可以是Context的扩展函数:funContext.toast(message:CharSequence)=Toast.makeText(this,message,Toas

kotlin - 什么时候应该更喜欢 Kotlin 扩展函数?

在Kotlin中,具有至少一个参数的函数可以定义为常规非成员函数或extensionfunction一个参数是接收者。至于作用域,似乎没有区别:两者都可以在类和其他函数内部或外部声明,并且两者都可以或不能具有同等的可见性修饰符。语言引用似乎不建议针对不同情况使用常规函数或扩展函数。所以,我的问题是:什么时候扩展函数比普通的非成员函数更有优势?什么时候普通函数优于扩展?foo.bar(baz,baq)vsbar(foo,baz,baq).这只是函数语义的暗示(接收器绝对是焦点)还是存在使用扩展函数使代码更清晰或开辟机会的情况? 最佳答案

kotlin - 什么时候应该更喜欢 Kotlin 扩展函数?

在Kotlin中,具有至少一个参数的函数可以定义为常规非成员函数或extensionfunction一个参数是接收者。至于作用域,似乎没有区别:两者都可以在类和其他函数内部或外部声明,并且两者都可以或不能具有同等的可见性修饰符。语言引用似乎不建议针对不同情况使用常规函数或扩展函数。所以,我的问题是:什么时候扩展函数比普通的非成员函数更有优势?什么时候普通函数优于扩展?foo.bar(baz,baq)vsbar(foo,baz,baq).这只是函数语义的暗示(接收器绝对是焦点)还是存在使用扩展函数使代码更清晰或开辟机会的情况? 最佳答案

kotlin - Kotlin 中线程和协程的区别

Kotlin中是否有与其他语言的协程实现不同的特定语言实现?协程就像轻量级线程是什么意思?有什么区别?Kotlin协程实际上是否并行(并发)运行?即使在多核系统中,任何时候也只有一个协程在运行?在这里,我开始了100,000个协程。这段代码背后发生了什么?for(iin0..100000){async(CommonPool){//Runlong-runningoperations}} 最佳答案 Whatdoesitmeanthatacoroutineislikealightweightthread?协程和线程一样,表示与其他协程(线

kotlin - Kotlin 中线程和协程的区别

Kotlin中是否有与其他语言的协程实现不同的特定语言实现?协程就像轻量级线程是什么意思?有什么区别?Kotlin协程实际上是否并行(并发)运行?即使在多核系统中,任何时候也只有一个协程在运行?在这里,我开始了100,000个协程。这段代码背后发生了什么?for(iin0..100000){async(CommonPool){//Runlong-runningoperations}} 最佳答案 Whatdoesitmeanthatacoroutineislikealightweightthread?协程和线程一样,表示与其他协程(线

android - 找不到字段的 setter - 将 Kotlin 与 Room 数据库结合使用

我正在与Room持久性库集成。我在Kotlin中有一个数据类,例如:@Entity(tableName="story")dataclassStory(@PrimaryKeyvalid:Long,valby:String,valdescendants:Int,valscore:Int,valtime:Long,valtitle:String,valtype:String,valurl:String)@Entity和@PrimaryKey注释用于Room库。当我尝试构建时,它失败并出现错误:Error:Cannotfindsetterforfield.Error:Executionfail

android - 找不到字段的 setter - 将 Kotlin 与 Room 数据库结合使用

我正在与Room持久性库集成。我在Kotlin中有一个数据类,例如:@Entity(tableName="story")dataclassStory(@PrimaryKeyvalid:Long,valby:String,valdescendants:Int,valscore:Int,valtime:Long,valtitle:String,valtype:String,valurl:String)@Entity和@PrimaryKey注释用于Room库。当我尝试构建时,它失败并出现错误:Error:Cannotfindsetterforfield.Error:Executionfail

java - Kotlin 'when' 语句与 Java 'switch'

Kotlin中的模式匹配很好,而且它不会执行下一个模式匹配这一事实在90%的用例中都很好。在Android中,当数据库更新时,如果我们不设置中断以使代码看起来像这样,我们会使用Java开关属性继续下一个案例:switch(oldVersion){case1:upgradeFromV1();case2:upgradeFromV2();case3:upgradeFromV3();}因此,如果某人拥有DB版本1的应用,但错过了DBv2的应用版本,他将执行所有需要的升级代码。转换为Kotlin,我们会遇到这样的困惑:when(oldVersion){1->{upgradeFromV1()upg