调用shuffle()后拼接值报错:提示表达式类型为void无法使用
Dart中shuffle()引发void类型错误的解决办法
问题根源在于Dart的shuffle()方法是原地打乱列表,它的返回类型是void——也就是说这个方法只修改原列表,不会返回任何值。你把shuffle()的调用结果赋值给变量,这些变量的类型就是void,自然没法执行字符串拼接操作,所以才会报"This expression has a type of 'void' so its value can't be used."的错误。
正确的实现方式
你需要先调用shuffle()打乱列表,再从打乱后的列表中获取需要的元素,再进行拼接:
// 先原地打乱两个列表 emojis.shuffle(); last.shuffle(); // 从打乱后的列表中取元素(这里以取第一个为例,可根据需求调整位置) final randomEmoji = emojis.first; final randomLast = last.first; // 执行拼接 final finalText = randomLast + randomEmoji;
保留原列表的方案
如果不想修改原列表,可以先创建列表的副本,再对副本执行打乱操作:
// 创建原列表的副本并打乱,原列表不受影响 final shuffledEmojis = List.from(emojis)..shuffle(); final shuffledLast = List.from(last)..shuffle(); // 从副本中取元素 final randomEmoji = shuffledEmojis.first; final randomLast = shuffledLast.first; final finalText = randomLast + randomEmoji;
内容的提问来源于stack exchange,提问作者Ali Nabel
相关产品推荐
相关产品推荐

