Tag: 科特林

如何将字符串转换为字符在Kotlin?

fun main(args: Array) { val StringCharacter = “A” val CharCharacter = StringCharacter.toChar() println(CharCharacter) } 我无法将字符串A转换为字符。 我知道StringCharacter =’A’使它成为字符,但我需要转换。 谢谢。

在Kotlin中调用超类的构造函数,Super不是一个expression式

我有两个类Entity和Account as abstract class Entity( var id: String? = null, var created: Date? = Date()) { constructor(entity: Entity?) : this() { fromEntity(entity) } fun fromEntity(entity: Entity?): Entity { id = entity?.id created = entity?.created return this; } } 和 data class Account( var name: String? = null, var accountFlags: Int? = null ) : Entity() […]

私人可视性修改器和子包

所以我最近开始尝试与Kotlin,我偶然发现: 如果顶级声明被标记为私有,则它在其声明的包中是私有的( 参见可见性修饰符 )。 由于包真的嵌套在Kotlin中,也就是说,包foo.bar被认为是foo的成员,如果某个包是私有的,那么它的所有子包都是可见的。 请注意,外包的成员默认情况下是不导入的,即,在包foo.bar中的文件中,我们无法访问foo的成员而不导入它们。 来自: 可见性和包装嵌套 那么让我们考虑下面的例子: File1.kt package foo private fun bar() = println(“This is bar!!!”) 和File2.kt package foo.baz import foo.bar fun main(args: Array) = bar() 从我理解的function栏()应该是可见的包在foo.baz,从而可以从main()调用。 但是,当我尝试编译上述我得到以下错误信息: 错误:Kotlin:无法访问’bar’:’foo’中的’private’ 这是一个错误或有语言的规格已经更新,文件没有? 我错过了什么吗? 提前致谢。

Kotlin的文件命名约定

Kotlin删除了Java“一个顶级公共类每个文件”的限制,我已经学会了爱。 我想知道是否有理由在这里讨论这个问题,以及是否有一些指导方针来处理这种新的自由?

Kotlin zipAll替代品

Kotlin的function是否像Scala中的zipAll一样? 在scala我可以做两个不同长度的数组的总和使用zipAll函数。 斯卡拉: val arrA = Array(1,2,3) val arrB = Array(4, 5) arrA.zipAll(arrB, 0, 0).map(x => x._1 + x._2) 或者在Kotlin中做到这一点的正确方法是什么?

错误:无法解析版本的依赖关系’org.jetbrains.kotlin:kotlin-stdlib-jre7:jar’

我有一个用java编写的项目我正在使用gradle集成kotlin。 我正在尝试遵循https://kotlinlang.org/docs/reference/using-gradle.html 我的build.gradle buildscript { ext.kotlin_version = ‘1.1.51’ repositories { jcenter() } dependencies { classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version” } } apply plugin: “kotlin” dependencies { compile “org.jetbrains.kotlin:kotlin-stdlib-jre7” } 根据Kotlin错误:找不到org.jetbrains.kotlin:kotlin-stdlib-jre7:1.0.7该库仅在kotlin v1.1及更高版本中可用。 当我部署这个库,并在我的android项目中使用它时,我得到标题中的错误。

扔在Kotlin的操作员

在kotlin中重写下面的代码将会是一个更优雅的方式。 if (xList.isEmpty()) { throw SomeException(“xList was empty”) } 我们有一个throwif操作符或什么的?

如何将一个types列表中的列表组合到一个单一的不可变列表中?

我有 interface Source { val type: String val viewTypes: List } 当我有一个列表 val sources = arrayListOf(source1, source2, source3) 我想连接所有源viewTypes到一个List 。 有没有一种方法来实现,而不使用for循环,并获得一个不可变的List的viewTypes ? 下面是错误的,因为它正在产生List<List> val listOfListViewType = sources.map { it.viewTypes }

颠倒中缀布尔结果kotlin

我有一个中缀函数,假设是这样的: class test{ infix fun equalsTen(value:Int):Boolean = value.equals(10) } 显然这不是真正的function,只是一个例子。 另外可以说,我有这个function: fun doSomething(value: Int){ val testClazz = test() if(testClazz equalsTen value){//line 3 //do something } } 我怎样才能扭转第3行的情况? 现在基本上是: if(testClazz.equalsTen(value)){…} 我怎样才能改变它: if(!testClazz.equalsTen(value)){…} 保持中缀expression?

最好的方法来处理这种情况下,“聪明的演员是不可能的”

我想知道处理这种情况的最好方法是什么 class Person(var name:String? = null, var age:Int? = null){ fun test(){ if(name != null && age != null) doSth(name, age) //smart cast imposible } fun doSth (someValue:String, someValue2:Int){ } } 调用doSth方法并确保名称和年龄nt为空的最简单方法是什么? 我正在寻找一个简单的方法,就像我只使用let的一个variables场景一样 name?.let{ doSth(it) }