Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Kotlin如何将数据类从何时返回添加到列表中_Android_Kotlin - Fatal编程技术网

Android Kotlin如何将数据类从何时返回添加到列表中

Android Kotlin如何将数据类从何时返回添加到列表中,android,kotlin,Android,Kotlin,我有一个数据类Worker,我想创建一个新的Worker数据,并在满足某些条件时添加到列表中 下面是我创建新工人的方式 var workerList=arrayListOf 当失业{ android->WorkernameA,ageA ios->WorkernameB,ageB }我不完全明白你的意思,但你可以这样回来: val worker: Worker = when(hirePosition) { android -> Worker(nameA, ageA) ios -&g

我有一个数据类Worker,我想创建一个新的Worker数据,并在满足某些条件时添加到列表中

下面是我创建新工人的方式

var workerList=arrayListOf 当失业{ android->WorkernameA,ageA ios->WorkernameB,ageB
}我不完全明白你的意思,但你可以这样回来:

val worker: Worker = when(hirePosition) {
  android -> Worker(nameA, ageA)
  ios ->  Worker(nameB, ageB)
}

workerList.add(worker)

我不完全明白你的意思,但你可以这样回来:

val worker: Worker = when(hirePosition) {
  android -> Worker(nameA, ageA)
  ios ->  Worker(nameB, ageB)
}

workerList.add(worker)
在if用作表达式时,满足的分支的值将成为整个表达式的值

因此有可能的变体:

var workerList = mutableListOf<Worker>()

val newWorker = when(hirePosition){
    android -> Worker(nameA, ageA)
    ios ->  Worker(nameB, ageB)
} 
workerList += newWorker
甚至

val workerList = listOf<Worker>(
    when(hirePosition){
        android -> Worker(nameA, ageA)
        ios ->  Worker(nameB, ageB)
    } 
)
选择最适合您的案例/代码样式。例如,最后一个变量适用于不可变列表初始化。您应该始终选择不可变变量,而不是可变变量。如果将其用作表达式,则满足的分支的值将成为整个表达式的值

因此有可能的变体:

var workerList = mutableListOf<Worker>()

val newWorker = when(hirePosition){
    android -> Worker(nameA, ageA)
    ios ->  Worker(nameB, ageB)
} 
workerList += newWorker
甚至

val workerList = listOf<Worker>(
    when(hirePosition){
        android -> Worker(nameA, ageA)
        ios ->  Worker(nameB, ageB)
    } 
)
选择最适合您的案例/代码样式。例如,最后一个变量适用于不可变列表初始化。当必须有else分支时,您应该始终选择不可变而不是可变的

当必须有一个else分支时

when是一个表达式,它返回它计算的任何分支的结果-因此您可以将该结果分配给某个对象,例如val worker=when…,或者您可以将其返回为return when…,或者您可以将函数调用链接到它,例如when{…}.hire

Kotlin有一堆类似的let,它们运行在一个对象上,让你用它做一些事情-有一堆,它们主要不同于你如何访问函数中的对象,你是运行它还是用它做一些事情-接收器vs变量,以及它们是否返回该函数的结果,或者最初传入的东西,或者什么都没有

不管怎么说,它们中的大多数都会对你正在做的事情起作用,对你的结果运行一个操作,就是这样。您甚至可以使用函数引用—当{…}.runworkerList::add时,但这是一个品味问题—我非常喜欢它,只要它合适

但一种更为Kotlin-y的方法是一次生成所有列表,因此它是一个固定不变的列表。这取决于您的用例——如果您需要在不同的时间不断添加人员,这可能是行不通的。但以防万一,这里有一种方法可以生成列表:

fun getWorker(position: HirePosition) = when(position) {
      android -> Worker(nameA, ageA)
      ios ->  Worker(nameB, ageB)
}

// or map(::getWorker)
val workerList = availablePositions.map { getWorker(it) } 
这是将一系列事物转换成一系列其他事物的一般方法。您可以将when块粘贴到map lambda中,但我认为将其分解为自己的函数并给它一个可读的名称更具可读性

你还可以做其他事情,比如buildList获取一个可变列表并允许你添加到其中-因此你可以在一堆HirePositions上运行它来添加更多到你的workerList中,但是现在这就足够了,呃,当是一个表达式时,它会返回它计算的任何分支的结果-因此你可以将该结果分配给某个对象,比如val worker=when…,或者您可以像return when…,一样返回它,或者您可以将函数调用链接到它,比如当{…}.hire

Kotlin有一堆类似的let,它们运行在一个对象上,让你用它做一些事情-有一堆,它们主要不同于你如何访问函数中的对象,你是运行它还是用它做一些事情-接收器vs变量,以及它们是否返回该函数的结果,或者最初传入的东西,或者什么都没有

不管怎么说,它们中的大多数都会对你正在做的事情起作用,对你的结果运行一个操作,就是这样。您甚至可以使用函数引用—当{…}.runworkerList::add时,但这是一个品味问题—我非常喜欢它,只要它合适

但一种更为Kotlin-y的方法是一次生成所有列表,因此它是一个固定不变的列表。这取决于您的用例——如果您需要在不同的时间不断添加人员,这可能是行不通的。但以防万一,这里有一种方法可以生成列表:

fun getWorker(position: HirePosition) = when(position) {
      android -> Worker(nameA, ageA)
      ios ->  Worker(nameB, ageB)
}

// or map(::getWorker)
val workerList = availablePositions.map { getWorker(it) } 
这是将一系列事物转换成一系列其他事物的一般方法。您可以将when块粘贴到map lambda中,但我认为将其分解为自己的函数并给它一个可读的名称更具可读性


你还可以做其他事情,比如buildList获取一个可变列表并允许你添加到其中-因此你可以在一堆HirePositions上运行它来添加更多到你的workerList中,但是现在这就足够了,呃

let是键,我可以访问let{}中的特定工作者,谢谢。'let'是键,我可以访问let{}中的特定工作者,谢谢。