Tag: 高阶函数

Kotlin:更高级的函数来计算列表中出现的数量?

我正在尝试使用Kotlin的高阶函数来计算列表中包含特定元素的次数。 我试过类似的东西 val result: Int? = list.count{ list.contains(“element”) } 但似乎是返回列表的大小,我不知道为什么。

Kotlinfunction:需要的单位? findInt

在Kotlin反复面对这个问题 fun test(){ compute { foo -> Log.e(“kotlin issue”, “solved”) } // This line is //showing error } fun compute(body: (foo:String) -> Unit?){ body.invoke(“problem solved”) } 我在Studio中遇到错误。 这是一个截图。

如何将字符串的某些字符与Kotlin中的HashMap 的值交换?

假设我有一个 val s: String = “14ABC5” 并有一个HashMap val b: HashMap = hashMapOf(“A” to “10”, “B” to “11”, “C” to “12”, “D” to “13”, “E” to “14”, “F” to “15” ) 我将如何在保持顺序(“1”,“4”,“10”,“11”,“12”,“5”)的同时,将10,11,12中的所有A,B, 到目前为止,我有这个 val result: List = s.toUpperCase().toCharArray().map{ it.toString() }.map{ it -> b.getValue(it)} 如果String所有字符都存在于HashMap但是我的String也可能包含不存在的键,这将起作用。

记录Kotlin中函数参数的参数

比方说,我有一个更高阶的函数,它注册某种点击监听器。 我可以记录它的目的和传入的listener参数,如下所示: /** * Adds a [listener] that’s called when the item is clicked. * * @param listener The listener to add */ fun addClickListener(listener: (count: Int) -> Unit) { … } 我的问题是,有没有办法来记录listener的参数? 这将在这个例子中count 。 在我的实际使用情况中,我的侦听器中有多个参数。 我注意到的是[listener]文本在我使用这个函数的文档视图中是可点击的,但它只是显示一个空的对话框。 有没有办法在那里描述参数呢? 现在,我已经在addClickListener方法中用@param块描述了监听器的@param ,但是这会在IDE中产生一个警告,我想知道是否有更合适的方法来实现它。

kotlin:用多个lambdaexpression式调用高阶函数

有可能调用具有多个lambda函数的函数吗? 如果是这样,我怎样才能调用以下function? fun post(path: String, params: JSONObject, completionHandler: (response: JSONObject?) -> Unit, errorCompletionHandler: (error: VolleyError?) -> Unit )

Kotlin Higher Order Function以可变数量的参数作为parameter passing一个函数

在我的应用程序中,我需要使用特定的框架来执行网络调用。 由于每个网络调用需要在单独的线程上执行,我想有一个函数启动新的线程执行调用并返回一个对象。 为此,我尝试使用HigherOrderFunctions,但直到现在我还没有发现如何将函数声明为一个参数,这个参数带有可变数量的参数。 给你一个想法,我想有这样的事情: fun Client.performNetworkCall(calledFunction:(vararg Object)->Object):Object{ Thread(Runnable { calledFunction }).start() //return function results } 但似乎不可能宣布这样的function。 Kotlin有可能吗? 我想避免在我需要执行网络调用时在每个代码中创建新线程。 所以我可以写这样的东西 client.performNetworkCall{ bean.createNewUser(User(“”,””,”Gosia”,”gosiak@gmail.com”,”pass”))} bean是我的界面的对象,它有一个函数createNewUser。 函数createNewUser在服务器上实现,执行后会返回一些结果。 如果我想要做的是不可能使用更高阶的函数,你能给我一个提示,我还能做些什么,像我上面描述的?

如何避免返回SAM接口的函数的对象expression式

我是一个kotlin新手所以也许这是微不足道的,但我没有find任何相关的帮助,在kotlinlang.org。 为了学习一点kotlin我喜欢实现PushStream库。 我想要定义这样的基本types: typealias Receiver = (T) -> bool typealias PushStream = (Receiver) -> Unit AFAIKtypes别名不支持,所以上面只是伪代码。 所以我的第一个尝试是这样的: interface Receiver : (T) -> Boolean { } interface PushStream : (Receiver) -> Unit { } fun singleton (v : T) : PushStream { return { r : Receiver -> r (v) } } 然后科特林说: Error:(10, 12) Kotlin: […]

如何在Kotlin中使用GROUP BY执行COUNT(*)?

假设我有一个下列类的对象列表。 class Contact( val name: String // … ) 我想检索一个映射名称到它的次数的映射Map 。 在一个基于SQL的数据库,我会查询: SELECT name, count(*) FROM Contact; 在Kotlin中使用更高阶函数的最好方法是什么?

如何调用与lambda多个相似签名Kotlin方法?

我正在使用这个库的一些代码: https : //github.com/Netflix-Skunkworks/rewrite 当我调用它的一个方法时,我遇到一个IDE错误: 所提供的参数都不能调用以下函数。 目标方法有两个相似的签名: data class CompilationUnit(…){ fun refactor() = Refactor(this) fun refactor(ops: Refactor.() -> Unit): Refactor { val r = refactor() ops(r) return r } fun refactor(ops: Consumer): Refactor { val r = refactor() ops.accept(r) return r } } Kotlin的调用代码: val unit: CompilationUnit =… unit.refactor{ tx -> doSomeThing() } 在Java中,这个lambda调用是可以的: CompilationUnit […]

在Scala中可以用“等价的方法”表示kotlin吗?

Kotlin Standard lib包含接收对象的’with’方法以及定义如下对象的方法: public inline fun with(receiver: T, block: T.() -> R): R = receiver.block() 并可以用作: val str = “string” with(str) { println(size)) // will print 6; equals to “string”.size println(substring(3)) // will print (ing); equals to “string”.substring(3) } 如何在Scala中定义类似的方法?