问题标签 [extension-function]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
15358 浏览

string - 使用扩展函数将字符串中的每个单词大写

我想在 Kotlin 中做一个扩展函数,将字符串中每个单词的第一个字母转换为大写

我尝试使用该capitalize()方法。这只是将 . 的第一个字母大写String

0 投票
1 回答
667 浏览

kotlin - 如何在 Kotlin 中内联扩展函数的接收器参数?

这个问题的启发,我在想如何内联扩展函数的接收器参数?理论上是这样的:

predicate就是我们的接收函数:

现在,对于上面的代码,我希望编译器抱怨它需要crossinline;但是,我收到以下警告:

警告:内联的预期性能影响public inline operator fun <T> ((T) -> Boolean).not(): (T) -> Boolean是微不足道的。内联最适合具有函数类型参数的函数

这让我相信编译器没有内联该函数的接收器。添加inlineorcrossinline只产生语法错误。

无法内联第二个函数会降低第一个函数的性能。

有没有办法告诉编译器内联该接收器参数?

0 投票
2 回答
249 浏览

lambda - 对理解 lambda 和接收器感到困惑

Kotlin 版本 1.2.50

我一直在 youtube https://www.youtube.com/watch?v=gPH9XnvpoXE上关注本教程的一些示例。还有一些事情我已经理解了,但仍然有些混乱。我在下面的代码中留下了我不确定发生了什么的注释。

0 投票
2 回答
245 浏览

kotlin - Kotlin 将函数扩展为未知类型

是否可以将扩展函数与返回未指定值类型的函数一起使用?

我必须这样做以避免错误,但我真的希望它在一行中。

我在第一个例子中得到的错误是

有任何想法吗?

编辑:更多信息

这是get函数的声明。

0 投票
1 回答
609 浏览

android - Kotlin/Android:递归查找所有类型 T 的视图

所以我有这个扩展功能ViewGroup

我像这样使用它:

但不知何故,它不起作用。有什么我做错了吗?

顺便说一句,tabs是 aLinearLayout其中包含三个Buttons。

0 投票
1 回答
386 浏览

kotlin - Kotlin - 使扩展功能在整个项目中都可以访问

我在一个类中有这个扩展函数:

我想在另一个类中重用这个函数而不需要复制代码。我该怎么做?谢谢你。

0 投票
1 回答
255 浏览

android - Kotlin - 根据扩展函数参数修改 Picasso 的 RequestCreator

我有一个ImageView类的扩展功能。我已经实现了一些关于如何根据传递的参数加载图像的逻辑。但在这里我被困住了。这些fit()centerCrop()返回 Picasso's RequestCreator,我什至无法构造它(它具有包私有构造函数)以便稍后修改它(基于参数)。我只是不知道该怎么做。我设法做到这一点的唯一方法是如下所示(请注意:你的眼睛会开始流血)。我找不到“正常”、“好”的方法来做到这一点。

所以我问你:我应该怎么做?

}

0 投票
2 回答
2748 浏览

kotlin - kotlin中具有扩展功能的伴侣对象?

我想拥有扩展功能并使用来自kotlin-logging 的记录器,并在伴随对象中拥有常量。

我的功能:

问题是我应该放在哪里val logger = KotlinLogging.logger {}MY_CONST因为我不能使用带有扩展功能的伴生对象?

0 投票
1 回答
1702 浏览

kotlin - 私有顶级扩展函数和类内部私有扩展函数的区别

我们目前正在将我们的项目切换到 Kotlin,并遇到以下问题:

我们只需要在给定类中的某个扩展函数。因此,我们有两种可能性:(1)private在文件顶层声明扩展函数或(2)private在类中声明扩展函数。

MCVE之后:

顶级示例(文件C1.kt):

内部类示例(文件C2.kt):

问题:

  1. 这两种方法有什么区别,除了C1.kt扩展功能String.double()对其他可能的文件成员(例如同一文件中的其他类)也是可见的?

  2. 由于我们希望实现代码“尽可能 kotlinic”,因此我们想知道这两种方法中的哪一种是建议的方法。上面的示例是否有官方建议/样式指南?我认为将扩展函数声明为尽可能接近其预期用途被认为是一种良好的做法,因此在上面的示例中C2会建议使用的结构?

0 投票
0 回答
61 浏览

generics - 消除 kotlin 泛型函数的歧义

背景:

我正在开发一个小型代码生成器。我想避免在实际生成代码之前没有代码提示的常见问题。为了解决这个问题,我创建了一个我打算生成的通用虚拟方法。

这将在 ide 中提供提示。实际生成后具体方法

应该使用它们。

问题:

不幸的是,这会导致以下错误。

我希望编译器会选择最具体的实现,但似乎并非如此。

有没有办法消除这些签名之间的歧义?