空列表的标头

问题描述 投票:0回答:2

我想获得我的第一个要素:

var stack = List[Map[String, ExpValue]]()

尽管这样做,我怎么可能总是会得到一个空的错误:

if (stack.isEmpty) { 
var new_map:Map[String, ExpValue] = Map(); 
new_map::stack;}
var x = stack.head

基本上为空时,添加一个元素。为什么头总是空的?

list scala dictionary interpreter
2个回答
0
投票

您需要将结果分配给您的堆栈变量:

var stack = List[Map[String, String]]()
if (stack.isEmpty) {
  var new_map: Map[String, String] = Map();
  stack = new_map :: stack;
}
var x = stack.head

0
投票

函数式编程中的关键概念之一是值的形状多种多样,但处理它们的机制却相同

val x: Int = 41
1 + x
x 
// res0: Int = 41 

val l: List[Int] = List(41)
1 :: l
l
// res1: List[Int] = List(41)

[List(41)是具有相同含义的值,41是一个值,并且出于相同的原因,res1仍然是List(41)而不是List(1, 41)res0仍然是41而不是42。] >

© www.soinside.com 2019 - 2024. All rights reserved.