Android 什么时候在Kotlin中传递函数类型是有益的?

Android 什么时候在Kotlin中传递函数类型是有益的?,android,kotlin,Android,Kotlin,下面是方法调用 createData(0){Address(…)} 或者我可以保持简单,相反,我可以 private fun createData( index: Int, address: () -> Address) 我将调用简单的方式createData(0,地址(…) 我只是想知道在这种情况下,使用函数类型有什么好处吗?您展示的场景是一个函数,它以“工厂”作为参数。如果只需要立即调用函数一次,那么没有理由不直接使用Address参数 但假设创建一个地址是一个CPU密集型的过程,您

下面是方法调用

createData(0){Address(…)}

或者我可以保持简单,相反,我可以

private fun createData(
index: Int,
address: () -> Address)
我将调用简单的方式createData(0,地址(…)
我只是想知道在这种情况下,使用函数类型有什么好处吗?

您展示的场景是一个函数,它以“工厂”作为参数。如果只需要立即调用函数一次,那么没有理由不直接使用Address参数

但假设创建一个地址是一个CPU密集型的过程,您可能直到稍后才需要它(如果需要的话)。然后,您可以保留该函数,只有在确实需要时才使用它

或者假设您想使用某种输入参数创建一组地址。然后,您可能希望获取一个参数,如
(Int)->Address
,并使用不同的参数多次调用它

或者假设这个函数需要一定数量的地址副本,而地址没有副本函数。然后,您可以反复调用该函数以获取副本

高阶函数还有许多其他用途。我只是举几个例子说明它们在工厂中的应用,因为这就是你所问的例子。但还有几个更为普遍的用途:

  • 如果函数应该对多个对象执行一个操作,并且您希望调用方能够传递该操作是什么
  • 您可以使用函数参数来代替接口,以便为传递给它的内容(lambda、已定义函数或SAM接口)提供更大的灵活性

如果不知道将函数传递到
createData
中的好处是什么,就很难说清楚。如果获取地址是资源密集型或时间密集型的,并且
createData
只在确实需要时调用它,那么这可能是有益的。
private fun createData(
index: Int,
address  -> Address)