草庐IT

Kotlin-script

全部标签

kotlin - 如何在kotlin中声明一个可为空的函数参数

例如:funf(func:()->Any?)参数func表示返回Any的函数?类型。但是如何使func可以为空,例如:funf((func:()->Any?)?) 最佳答案 你不是太远了,我想你只是放错了括号。尝试:funf(func:(()->Any?)?) 关于kotlin-如何在kotlin中声明一个可为空的函数参数,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/51015

Kotlin:可以在编译期间通过元编程修改函数吗?

在JavaScript/Python等动态语言中,可以在运行时覆盖或“修改”函数。例如,为了修改JS中的alert函数,可以这样做:const_prev_alert=window.alert;window.alert=function(){_prev_alert.apply(this,arguments);console.log("Alertfunctionwascalled!");}这将输出“Alertfunctionwascalled!”每次调用alert函数时发送到控制台。现在,由于Kotlin-JVM或Kotlin-Native的静态特性,显然这样的事情在运行时是不可能的。但是

kotlin - Anko 0.8 - Unresolved lparams 引用

主要问题是:lparams只是从Anko中消失了,还是我做错了什么?以下代码段无法编译:verticalLayout{}.lparams(width=matchParent,height=matchParent){topMargin=dip(10)}虽然这没有任何问题:verticalLayout{layoutParams=LinearLayout.LayoutParams(matchParent,matchParent).apply{topMargin=dip(10)}}我不太介意第二个选项,但是您必须在生成参数时指定布局类型,这可能会有点烦人(而且比原始解决方案更脆弱)。我没有在A

kotlin - 带有默认参数的 Kotlin 函数的类型签名

假设我有:funaddInvoker(adder:()->Int=::add):Int{returnadder()}funadd(num1:Int=1,num2:Int=1):Int{returnnum1+num2}我收到一个错误,因为::add有两个参数,但addInvoker的签名要求它有零个参数。但是,如果我将其更改为:funaddInvoker(adder:(Int,Int)->Int=::add):Int{returnadder()}funadd(num1:Int=1,num2:Int=1):Int{returnnum1+num2}然后我不能调用adder(),即用它的默认参

android - Kotlin,Java,multidex,Dagger 2,Butterknife 和 Realm : transformClassesWithJarMergingForDebug: duplicate entry: org/jetbrains/annotations/NotNull. 类

我们有现有的JavaAndroid代码。我们想轻松地慢慢开始迁移到Kotlin。我们使用Dagger2、Butterknife和Realm。我们使用Java8编译器(但我们的targetCompatibility和sourceCompatibility是1.7)。我已经在网上漫游了几个小时,看到了SO、GitHub对话等,并设法解决了除一个以外的所有问题:构建成功,但是在尝试调试时,我们得到:Error:Executionfailedfortask':app:transformClassesWithJarMergingForDebug'.>com.android.build.api.t

java - 带有 Kotlin 的 Dagger 2,在 ApplicationComponent 中返回具有泛型的类型

我想返回泛型类型以由子图公开,问题出在自动生成的java类中,我尝试做一些事情,但解决它的一种方法是从AppComponent中删除泛型类型和返回简单对象。还有更“正确”的方法吗?这是AppComponent@Singleton@Component(modules=arrayOf(ApplicationModule::class))interfaceApplicationComponent{funinject(activity:BaseActivity>)//...fundataBase():Database}这是ApplicationModule中的函数@Provides@Singl

unit-testing - Kotlin 中的测试无法访问 protected 方法

我要考B类:classB:A{overridefuninit(){//doworkhere}}classA{protectedfuninit(){}//willbecalledbyinternallogic}在Java中调用没有问题:b.init()在测试方法中(测试类与测试对象在同一个包中),但是在Kotlin编译器报错:Cannotaccess'init':itisprotectedin'B'@Testfun`checksinit`(){valb=B()b.init()//assertworkdone}为什么它不起作用?如何解决这个问题(我想避免公开方法)?

intellij-idea - 如何为 Gradle 正确配置 Kotlin 插件?

我正在尝试构建一个基本的Gradle项目。我的build.gradle文件如下。我不断收到以下错误。我不明白,因为你可以在这里找到插件...我想我要指向的地方:https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-gradle-plugin更新:如果我注释掉Kotlin行,spring-boot插件也会发生同样的事情。它不仅仅特定于Kotlin插件。错误:Error:(21,0)Plugin[id:'kotlin',version:'1.1.1']wasnotfoundinanyofthefollowingsour

arrays - 在 kotlin 中初始化数组

我正在kotlin中制作俳句生成器,但在这段代码中我得到了一个奇怪的“必须初始化变量firstLineArray”。importjava.util.RandomfunoneSyllableWords():String{valoneSyllableWordArray=arrayOf("Life","Love","One","On","No","Go")valrandom=Random()valrandint=random.nextInt(oneSyllableWordArray.size)returnoneSyllableWordArray[randint]}funmain(args:A

kotlin - Kotlin 数据类中可变集合的防御性副本

我想要一个接受只读列表的数据类:dataclassNotebook(valnotes:List){}但它也可以接受MutableList,因为它是List的子类型。例如下面的代码修改了传入的列表:funmain(args:Array){valnotes=arrayListOf("One","Two")valnotebook=Notebook(notes)notes.add("Three")println(notebook)//prints:Notebook(notes=[One,Two,Three])}有没有办法在数据类中执行传入列表的防御性副本? 最佳答案