Tag: kotlin extension

不可空的可变映射

Java: 1.8.0_102 Kotlin: 1.0.4 我试图创建一个地图,你可以做一些像map[“key”] += 5类似于JavaScript。 Kotlin已经在withDefault情况下解决了这个问题的一部分,但是map的get函数仍然返回一个可以为空的值,所以我开始用withDefault interface NonNullableMutableMap : MutableMap { override fun put(key: K, value: V): V override fun get(key: K): V } fun MutableMap.withoutNullValues(default: () -> V): NonNullableMutableMap { return NonNullableMapWrapper(this, default) } class NonNullableMapWrapper(val map: MutableMap, val default: () -> V) : NonNullableMutableMap { override fun put(key: K, value: V): […]

Kotlin范围函数与扩展运行

从我学到的东西,它看起来像T.run扩展函数, with具有相同的目的,创造的可能性,在同一个对象上分组多个调用,返回lambda的最后一个对象的结果。 T.run()具有在使用前检查可空性的优点。 (正如本文指出的那样) 使用什么优点? 或更好地说:什么阻止我总是使用T.run()而不是? 谢谢

扩展MockitovalidationKotlin不工作(以“kotlin方式”)

我想扩展validation,以允许在同一模拟对象检查多个命令,但它不工作,它编译,但运行它不会运行每个命令相同。 只是想避免写更多的东西,如: Mockito.verify(mockedView).initViews() Mockito.verify(mockedView).setImage(user.photoUrl) 并写更多的像: Mockito.verify(mockedView){ initViews() setImage(user.photoUrl) } 第一次尝试: @Test fun onCreate_loadLoginInfo() { val user = MockUser.user() presenter.onCreate(mockedView, user) Mockito.myVerify(mockedView) { initViews() setImage(user.photoUrl) setName(user.name) setEmail(user.email) } } class Mockito { companion object } fun Mockito.Companion.myVerify(obj: T, func: T.() -> Unit) { org.mockito.Mockito.verify(obj).func() } 第二次尝试: @Test fun onCreate_loadLoginInfo() { val user = MockUser.user() presenter.onCreate(mockedView, user) […]

为什么我们有在Kotlin中命名为componentN的函数?

我刚刚看了Kotlin 标准库 ,发现了一些奇怪的扩展函数叫做componentN ,其中N是从1到5的索引。 有所有types的原语的函数。 例如: /** * Returns 1st *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun IntArray.component1(): Int { return get(0) } 它看起来好奇。 我对开发者的动机很感兴趣。 调用array.component1()而不是array[0]更好吗?

Kotlin的扩展

我想使用我的自定义类的variables和方法的扩展。 我正在尝试下面的代码,但得到错误 本地扩展属性是不允许的 val Double.km: Double get() = this * 1000 val Double.m: Double get() = this val Double.cm: Double get() = this / 100 val Double.mm: Double get() = this / 1000 val Double.ft: Double get() = this / 3.28084 val oneInch = 25.4.mm println(“One inch is $oneInch meters”) // prints “One inch is […]

Kotlin扩展function – 如何使其成为全球?

我已经在Android ViewGroup类上创建了一个Kotlin扩展函数,以便它可以更轻松地进行布局膨胀调用。 所以,这是我的扩展: fun ViewGroup.inflate(layoutRes: Int): View { return LayoutInflater.from(context).inflate(layoutRes, this, false) } 然后我可以在适配器类中使用它来扩充布局: override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val v = parent.inflate(R.layout.view_item) return ViewHolder(v) } 我已经在适用于RecyclerView的适配器类中声明了这个扩展,这样可以使通货膨胀调用更容易。 但是我想要所有的适配器,或者我应该说所有的ViewGroup类来看这个扩展。 我想永久。 它似乎只是坚持在我宣布它不全球的地方。 我应该在哪里声明这个扩展,以便在任何时候使用视图组时,这个方法扩展将是可用的?

Kotlin List尾巴function

我正在尝试在Listfind一个尾部函数,但是我找不到任何东西。 我结束了这样做。 fun List.tail() = this.takeLast(this.size -1) 有一个更好的方法吗?

Kotlin综合扩展为视图

我有一些意见的布局,其中一个有id title_whalemare import kotlinx.android.synthetic.main.controller_settings.* import kotlinx.android.synthetic.main.view_double_text.* class MainSettingsController : BaseMvpController() { val title: TextView = title_whalemare override fun getLayout(): Int { return R.layout.controller_settings } } 我试着用kotlin extensionsfind它,但我不能,因为我得到以下错误 由于接收器types不匹配,以下候选者都不适用 controller_settings.xml 我的错误在哪里?

如何创建Kotlin DSL – DSL语法Kotlin

和anko一样,你可以这样编写回调函数: alert { title = “” message = “” yesButton { toast(“Yes”) } noButton { toast(“No”) } } 我怎样才能创建一个这样的嵌套function? 我试图创建它像下面,但似乎并没有工作。 class Test { fun f1(function: () -> Unit) {} fun f2(function: () -> Unit) {} } 现在,如果我用这个扩展function, fun Context.temp(function: Test.() -> Unit) { function.onSuccess() // doesn’t work } 从Activity调用它: temp { onSuccess { toast(“Hello”) } […]

在Kotlin编程语言的可用性方面的重要性

让我知道在Kotlin中可变参数的重要性,如果有任何文件或一些有用的链接。 请分享。