【发布时间】:2015-05-28 11:20:31
【问题描述】:
我正在尝试检索 Optional(N) 中的值,其中“N”是值。我是 Swift 新手,所以我不确定我的语法是否正确,或者是否甚至建议这样编写我的代码,但这就是我所拥有的:
func dmg_Calc() {
if player.SPD < opponent.SPD {
var XX = rndm(2, 3)
var A = opponent.Lvl
var B = opponent.ATT
var C = opponent.MOV[XX]?[1]
var D = player.ATT
var X = 1.0
var Y = 1.0
var Z = rndm_DBL(217.0, 255.0)
// Opponent Attacks
var DMG = ((2.0*A/5.0+2.0)*B)
DMG = (DMG/D/50.0)+2.0
DMG = DMG*(X*Y/10.0)*Z/255.0
player.HP = (player.HP - DMG)
println(C)
println(DMG)
println("HP Left \(player.HP)")
println(XX)
}
}
如我所见,我将其用作伤害计算。我的问题是当你到达 Var C 时。那条线给了我一个 Optional(N)。它基本上是将字典路由到具有所需值的数组。
class Eevee {
var Lvl = 5.0
var HP = 20.0
var ATT = 55.0
var DEF = 15.0
var SPD = 16.0
var SPC = 15.0
var isPoisoned = false
var isParalyzed = false
var isAsleep = false
var MOV = [1 : ["Tackle", 40.0, 35], 2 : ["Tail Whip", 0.9, 35]]
上面是函数正在访问的类。我知道它可能看起来很乱或很糟糕,但我目前正在使用它。
我想要做的事情是否可行,或者我应该尝试不同的方法?任何帮助将不胜感激!!!
编辑:
现在我在 Xcode 中收到以下错误:
'NSObject' 不能转换为 'UInt8'
这是新的方程式:
var DMG = ((2.0*A/5.0+2.0)*B*C)
DMG = (DMG/D/50.0)+2.0
DMG = DMG*(X*Y/10.0)*Z/255.0
【问题讨论】:
-
下次请删除所有不必要的代码以提高可读性。
-
请说出这3行中的哪一行............
-
第一个。带C的那个
-
当使用可选计算时,您需要通过执行我在回答中所说的相同操作来告诉它它不是 nil。因为 C 是可选的,所以它不能确定 C 是否为 nil,所以它不会抓住这个机会给你一个错误。但是,Swift 中的错误仍然很容易误导。
标签: swift command-line