我开始学习groovy,因为我喜欢通过练习学习,我写了那个小应用程序:
def height = 1; def commands; def floors; def finished = false
def up = { height < 5 ? height++ : println("Can't go higher!") }
def down = { height > -1 ? height-- : println("Can't go lower!") }
def help = {
print "Commands are "
commands.each{key, val -> print "'$key' "}
println()
}
def printFloors = {
println "Floors are "
floors.each{key,val -> println "'$key' -> '$val'"}
println()
}
def exit = { finished = true }
def prompt = { print floors["$height"] }
commands = [ 'u': up,
'up': up,
'd': down,
'down': down,
'help': help,
'': help,
'exit': exit,
'pf': printFloors]
floors = [ "-1": "Basement : " ,
"0": "Ground : " ,
"5": "Penthouse : " ]
(1..4).each{floors += ["${it}" : "Floor ${it} : " ] }
bR = new BufferedReader(new InputStreamReader(System.in))
while(!finished){
prompt()
def cmd = bR.readLine()
def code = commands[cmd]
if(code != null){
code()
}
}
Run Code Online (Sandbox Code Playgroud)
一切正常,除了你在哪个楼层打印(提示功能).如果你在地下室,底层或顶层公寓,它会打印,但不会选择"Floor i:"而是打印null:/当我输入"pf"打印我的楼层字典时,值就在那里......任何想法?谢谢
您将GString实例作为键添加到地图中,然后使用String实例搜索它们.
这两个是不一样的(尽管具有相同的外观-见"GString的字符串是不是"部分在此页)
尝试改变:
(1..4).each{floors += ["${it}" : "Floor ${it} : " ] }
Run Code Online (Sandbox Code Playgroud)
至
(1..4).each{floors += [ ("${it}".toString()): "Floor ${it} : " ] }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
171 次 |
| 最近记录: |