Tag: 科特林

它有可能从游艇中断

是否有可能从航线中断。 我的代码: fun test() { bufferedReader.forEachLine { val nameParam = it.split(“:”)[0] if (name == “test”) return // here i wan to return from function } } 我试过’return @ foreachline’,但它只是继续下一行

两个列表的所有可能的组合

鉴于我有两个名单: val ints = listOf(0, 1, 2) val strings = listOf(“a”, “b”, “c”) 我想要所有可能的元素组合 0a, 1a, 2a, 0b等 有没有更优雅的方式比: ints.forEach { int -> strings.forEach { string -> println(“$int $string”) } }

不能使用解构声明

我有一个classPerson : class Person(val name: String, val age: Int) 我想用这样的Parent来使用Destructuring声明: val (name, age) = Person(“name”, 22) 但我得到这个错误: Person类的解构声明初始值设定项必须具有“component1()”函数Person类的解构声明初始值设定项必须具有“component2()”函数

用函数参数替换重复的代码

我有以下代码,其中包含很多重复.. override fun onOptionsItemSelected(item: MenuItem?): Boolean { when (item?.itemId) { R.id.action_crop -> { val bitmap = capturedReceiptImageView.bitmap val bitmapCropped = BitmapHelper.cropBitmap(bitmap, capturedReceiptImageView.getDimensions()) capturedReceiptImageView.setImageBitmap(bitmapCropped) capturedReceiptImageView.invalidate() bitmap.recycle() } R.id.action_rotate_left -> { val bitmap = capturedReceiptImageView.bitmap val bitmapRotated = BitmapHelper.rotateBitmap(bitmap, -90.0f) capturedReceiptImageView.setImageBitmap(bitmapRotated) capturedReceiptImageView.invalidate() bitmap.recycle() } R.id.action_rotate_right -> { val bitmap = capturedReceiptImageView.bitmap val bitmapRotated = BitmapHelper.rotateBitmap(bitmap, 90.0f) capturedReceiptImageView.setImageBitmap(bitmapRotated) […]

选项链接而不是if / else

有没有更简洁的方式来使用选项链接和/或elvis运算符来编写下面的代码? email.addSubject(if (creator != null) String.format( inviteDescription, creator) else String.format(inviteDescriptionNoCreator, group)) 感觉应该有。

在Kotlin中包含可为空的列表的列表

我有一个List包含空值(我想这是不禁止的)。 如果这个列表中的一个元素为空,我希望整个列表为null(Haskell人们称之为sequence )。 下面的伪代码演示了我想要做的事情: fun sequence(a : List) : List? { return a.fold( listOf(), { prevArray, element -> if(element == null) null else prevArray + element }) } 这是伪代码,因为编译器抱怨Null can not be a value of a non-null type kotlin.collections.List 。 在Kotlin中expression我想要的东西的惯用方式是什么? 使用Java的Optionaltypes,这至少是可编译的: fun sequence(a : List) : Optional<List> { return a.fold( Optional.of(listOf()), { prevArray, element […]

为什么我不能在kotlin中使用lambda接口?

看,我有一个Java类: public final class JavaReceiveSingle { public static void useSingle(Single single) { single.doSth(); } public static void useSingle2(SingleInterface singleInterface) { singleInterface.doSth(); } } 一个Java界面: public interface SingleInterface { void doSth(); } 一个kotlin界面: interface Single { fun doSth() } 现在我可以在一个kotlin类中使用lambda: JavaReceiveSingle.useSingle2({}) 但是如果我想对kotlin接口做同样的事情: JavaReceiveSingle.useSingle({}) IDE将显示错误:必需:单个! 发现:() – >单位 如果我指定单一像: JavaReceiveSingle.useSingle(Single{}) 仍然错误:接口单一没有结构! 尽管下面的代码工作: JavaReceiveSingle.useSingle(object :Single{ override fun aa() […]

注入一个实例Kotlin&Guice失败

我有以下代码: class Test { private val context = Context().apply { property = “foo” } private val injector = Guice.createInjector(Module { it.bind(Context::class.java).toInstance(context) }) @Test fun `service received correct context`() { assertThat(injector.getInstance(Service::class.java).context.property, equalTo(“foo”)) } } class Service @Inject constructor(val context: Context) class Context { @Inject lateinit var property: String } 当运行它时,测试失败,抱怨(正确)一个空字符串不是“foo”。但为什么Guice不使用我精心创建的实例,并以Moduleforms提供给注入器? (这是第一个问题。) 但是,如果我更改Context看起来像这样: class Context { @get:Inject […]

在Kotlin大量转换为Byte

为什么65555转换为byte在Kotlin中产生了19的结果?

HashMap错误 – containsKey,get

任何人都可以点亮一下吗? 问题代码: protected var table = HashMap<Class, Double>() if (table.containsKey(object)) { value = table.get(object) } containsKey(K):不推荐使用布尔值。 Map和Key具有不兼容的types。 上传到任何? 如果你确定的话 所以我改变了这个: if (table.containsKey(object as Any?) 修复了错误,但这是我应该做的修复它吗? 或者,还有更好的方法? 还有.get(object)有一个错误: types推断失败。 要求:kotlin。双重发现kotlin。双重? 同样的错误信息也是这样的: val c = someObject.javaClass // pre j2k code: final Class c = someObject.getClass(); weight = weightingTable[c] <– error here 我不知道在这里做什么