我想写一个PnP助手。我用统计信息和统计信息级别创建了一个哈希,并定义了一种升级这些统计信息的方法。这是我的哈希:
$stats = {
"HP" => 300,
"VIT" => 9,
"STR" => 10,
"DEX" => 15,
"SPD" => 8,
"INT" => 11,
"PSY" => 21,
"HW" => 2,
"MED" => 3,
"SCHW" => 0,
"GEN" => 12,
"RGEW" => 25,
"SELB" => 11,
"MKEN" => 19,
"WILL" => 23
}
下面是我的方法:
def level_stat (stat, amount = 1)
@string = stat.upcase
print "#{@string}: #{$stats[@string]} > "
$stats[@string] += 1 * amount
puts $stats[@string]
if (@string == "VIT")
$stats["HP"] += 5 * amount
print "#{"HP"}: #{$stats["HP"]} > "
puts $stats["HP"]
end
end
amount
的默认值会将统计信息加1,但可以同时对同一统计信息进行多次升级(或者应该如此)。调用此方法可以按预期进行:
level_stat ("int")
但是,调用以下语句会引发错误:
level_stat ("vit", 2)
# >> syntax error, unexpected ',', expecting ')'
# level_stat ("vit", 2)
# ^
我不明白为什么要这么做。
答案 0 :(得分:7)
删除level_stat
和(
之间的空格,或者完全删除括号:
level_stat("vit", 2)
level_stat "vit", 2
通过添加空格和括号,ruby分析器会误解您的意图,并引发一个SyntaxError
。
如果还没有,请快速浏览一下ruby style guide -省略def
中的空格也是一种常见的做法:
def level_stat(stat, amount = 1)
# ...
end
答案 1 :(得分:2)
仅用于添加@Tom的答案。
看:
def twice(arg)
puts arg * 2
end
twice 5 #=> 10
twice(5) #=> 10
twice (5) #=> 10
def plus(arg1, arg2)
puts arg1 + arg2
end
plus 2, 2 #=> 4
plus(2, 2) #=> 4
plus (2, 2) #=> syntax error, unexpected ',', expecting ')'
Ruby分析器认为(2, 2)
是单个参数,但是(2, 2)
不是有效的Ruby表达式。
这种情况,使用了多个参数时。如您所见,一个参数没有问题。
因此请遵循代码样式。伙计们给了你链接。