Scala在Predef中有一个通用的标识
函数:
def identity[A](x: A): A
Kotlin 在标准库中是否有类似的功能?当然,我可以简单地使用 { it }
来代替,但我发现标识
更容易阅读,并且实例化所有这些 lambda 有点浪费。
我必须能够在函数(Foo)-
目前还没有这样的函数,但是您可以自己轻松定义它:
fun <T> identity(x: T): T = x
如果您认为有足够的用例可以在 Kotlin 标准库中声明此函数,请在 youtrack.jetbrains.com 提交问题。谢谢!
如果您需要将标识函数作为参数传递给另一个函数,您可以简单地使用{it}
。例如,如果您有一个List
list.flatMap(identity)
其中标识
是标识函数。这可以写成:
list.flatMap { it }
这相当于:
list.flatMap { x -> x }
另一种方法是在某处定义标识函数,例如:
val identity: (List<String>) -> List<String> = { it }
但是我们不能创建一个通用的<code>val</code>,因此我们必须为每种类型定义一个标识函数。解决方案(正如在Java<code>函数</code>接口中所做的那样)是将其定义为常量函数:
fun <A> identity(): (A) -> A = { it }
并将其用作:
list.flatMap(identity)
当然,写起来容易得多:
list.flatMap { it }
一次性声明一个标识函数是不可能的(这将适用于所有类型),因为它必须参数化。可以使用返回此标识函数的函数:
fun <T> identity(): (T) -> T = { it }
虽然它完成了这项工作,但它并不是很有帮助,因为现在必须写:
list.flatMap(identity())
如何在使用Kotlin的Spring Boot中正确初始化ConfigurationProperties? 目前我喜欢下面的例子: 但是它看起来很丑陋,实际上不是一个iable,foo是常量ue,应该在启动期间初始化,将来不会改变。
模拟方法:
在Kotlin中,标题和正文都是可选的;如果类没有正文,则可以省略大括号。 所以我们可以像这样定义类, 这种类型的课有什么用?
第三方身份赋予功能模块 自定义授权,用户将频道改为自定义授权模式,并设定好自定义地址,访客进入观看页后会先跳转到自定义网址,完成身份赋予后再跳转回来 第三方身份赋予密钥,用户在“媒体中心 ——> 基础配置”栏生成密钥后,用以给传输的数据加密 身份赋予接口,用户调用接口传输密文,完成身份赋予 用户得到带有识别码的Cookie,并跳转到指定网址 第三方身份赋予接口 GET /hubuser/api/a
我有一个科特林·格雷德尔项目。我将Lombok添加为依赖项,并用kapt注册了它 未解析的引用:日志 显然没有应用注释处理。
问题内容: 我正在学习具有C ++和Java背景的Kotlin。我期待下面的打印,不。我知道这对应到。默认实现不比较每个成员,即和吗?如果是这样,它会不会看到字符串值相等(因为再次映射到字符串值)?显然,我在Kotlin中还没有涉及平等与身份相关的问题。 问题答案: 您描述的默认实现仅适用于数据类。不适用于从中继承实现的常规类,只需使对象与自身相等即可。