Tag: 成语

在Kotlin中处理可空或空列表的习惯方式

假设我有一个List<Any>?类型的变量activities List<Any>? 。 如果列表不为空而不是空的,我想做一些事情,否则我想做别的事情。 我想出了以下解决方案: when { activities != null && !activities.empty -> doSomething else -> doSomethingElse } Kotlin有没有更习惯的方式来做到这一点?

Kotlin和惯用的方式来写,'如果不是空的,否则…'基于可变值

假设我们有这样的代码: class QuickExample { fun function(argument: SomeOtherClass) { if (argument.mutableProperty != null ) { doSomething(argument.mutableProperty) } else { doOtherThing() } } fun doSomething(argument: Object) {} fun doOtherThing() {} } class SomeOtherClass { var mutableProperty: Object? = null } 与Java不同的是,在运行时你可以独自担心空引用问题,但是这并不能正确编译。 当然, mutableProperty在'if'中可能不再是null。 我的问题是处理这个问题的最好方法是什么? 有几个选项是显而易见的。 在不使用任何新的Kotlin语言功能的情况下,最简单的方法显然是将该值复制到一个方法范围的值,而后者不会随之改变。 有这个: fun function(argument: SomeOtherClass) { argument.mutableProperty?.let { doSomething(it) return } doOtherThing() […]

什么是这个python迭代器的等价物的kotlin成语

问题是,如何在Kotlin中创建一个像Python一样的迭代器。 考虑这个将字符串解析为子字符串的Python代码: def parse(strng, idx=1): lst = [] for i, c in itermarks(strng, idx): if c == '}': lst.append(strng[idx:i-1]) break elif c == '{': sublst, idx = parse(strng, i+1) lst.append(sublst) else: lst.append(strng[idx:i-1]) idx = i+1 return lst, i >>>res,resl = parse('{ a=50 , b=75 , { e=70, f=80 } }') >>>print(resl) >>>[' a=50', ' b=75', […]