我有课
data class A(
var id: Long? = null,
var desc: String,
var cnt: String
)
我想创建一个列表,其中包含5个类A类型的元素,所有元素都是唯一的,并且使用函数式编程风格。比如说
[A(id=1, desc="t1", cnt="s1"), A(id=2, desc="t2", cnt="s2"), A(id=3, desc="t3", cnt="s3"), A(id=4, desc="t4", cnt="s4"), A(id=5, desc="t5", cnt="s5")]
我试着这样做,但在我看来有一个更理想的方式(如果我想要100尺寸…)
val aList = mutableOf<A>(null, null, null, null, null)
aList.forEachIndexed { index, _ ->
x = createA() // here an entity is created and a unique id is assigned
alist[index] = A(
id = x.id,
desc = x.desc+index,
cnt= x.cnt+index
)
3条答案
按热度按时间svgewumm1#
除了创建一个可变列表和使用
forEachIndexed
,你可以使用一个类似构造函数的函数来处理带有lambda的列表(源代码)。此外,请考虑使用字符串模板而不是串联:
输出:
here!
im9ewurl2#
您可以使用
List
工厂函数创建一个所需大小的列表,并使用lambda指定每个索引的元素应该是什么:也就是说,创建一个
A
似乎有点浪费,只是为了创建另一个具有一些不同属性的A
。考虑让createA
接受一个Int
参数,当然,如果可以更改它的话。vmdwslir3#
你可以用 n..m(Ranges)创建一个范围,然后使用map创建条目:
或者如果元素计数的值存储在变量中:
请注意,n..m 的语法创建了IntRange。对于LongRange,没有短语法,只使用构造函数,但另一方面,.toLong() 转换可以被删除: