Swift 如何在“中提取价值”;可选(值)";
我试图检索可选(N)中的值,其中“N”是值。我是Swift新手,因此我不确定我是否有正确的语法,或者是否建议我这样编写代码,但我有以下几点:Swift 如何在“中提取价值”;可选(值)";,swift,command-line,Swift,Command Line,我试图检索可选(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
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)
}
}
上面是函数正在访问的类。我知道它可能看起来很凌乱或可怕,但这正是我目前正在处理的问题
我想做的是可能的还是应该尝试不同的方法?任何帮助都将不胜感激
编辑:
现在我在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
当打印出一个可选的,你知道它不是零,你会想把一个!在你想要打印出来的东西之后
println(C!)
它只在打印它或将它插入字符串(如“(optionalString)”时说可选(值),所以您不必“提取”它
一个可选变量基本上是告诉程序这个变量在使用时可以为零
您获得可选项的原因是词典可能不包含您搜索的关键字,在本上下文中,nil可选项表示“不在词典中”。如果您确信XX将始终在MOV中,那么请使用对手.MOV[XX]![1] 注:更改?到(如果XX不在MOV中,那么在运行时会出现致命错误!)。使用!,“砰”的发音是为了警告你——你真的确定这一点吗
注2:如果数组的索引1中没有项,则在运行时也会出现致命错误。下次请删除所有不必要的代码以提高可读性。请说出这3行中的哪一行是第一行。有cw的一个当用一个可选项计算时,你需要通过做我在回答中所说的同样的事情来告诉它它不是零。因为C是可选的,所以不能确定C是否为零,所以它不会冒险给你一个错误提示。然而,Swift中的错误仍然是非常错误的。很高兴知道!但我想把C放在那个大方程中,所以一个值是40,方程不变。这个值是否仍然适用,或者乘以可选值(40)?好的,完全可以,但我遇到了一个新问题。我现在正在编辑这篇文章。是的,我确信XX将永远在MOV中。MOV将以攻击力和#的使用次数进行4次移动。您的方法也有帮助,但我在上面编辑了一个新错误。您有一个Any数组,您可能希望定义类似struct Action{name:String;value1:Float;value2:Float}的内容。那么MOV是[1:动作(“铲球”,40.0,35),2:动作(“尾鞭”,0.9,35)]我是否仍然将MOV声明为Var?这取决于您是否要修改MOV。是的,接下来我想修改MOV
println(C!)