Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何将浮点值乘以布尔值0或1?_Swift_Function_Boolean - Fatal编程技术网

Swift 如何将浮点值乘以布尔值0或1?

Swift 如何将浮点值乘以布尔值0或1?,swift,function,boolean,Swift,Function,Boolean,下面的代码给出了一个断点错误: func doScore(num: Float, binaural: Bool, noise: Bool) -> Float { if 50 ... 100 ~= num{ let numDoubled = num + (Float(noise.intValue()!) * weighting)// <--- this is where I get my error return numDoubled.rounded() } fu

下面的代码给出了一个断点错误:

func doScore(num: Float, binaural: Bool, noise: Bool) -> Float {


if 50 ... 100 ~= num{

  let numDoubled = num + (Float(noise.intValue()!) * weighting)// <--- this is where I get my error 
  return numDoubled.rounded()


}
func-doScore(num:Float,双耳:Bool,noise:Bool)->Float{
如果50…100~=num{

让numDoubled=num+(Float(noise.intValue()!)*weighting)/通过执行一个简单的解决方法,您可以轻松地修复它

let numDoubled = num + (noise ? weighting : 0.0)
但在我的解决方案中,不需要做双重工作(转换为int,然后再转换为float)

根据vacawama评论更新

根据您的评论更新答案:

let numDoubled = num + ( (noise && binaural) ? weighting : 0.0 ) )

通过做一个简单的变通方法,您可以轻松地修复它

let numDoubled = num + (noise ? weighting : 0.0)
但在我的解决方案中,不需要做双重工作(转换为int,然后再转换为float)

根据vacawama评论更新

根据您的评论更新答案:

let numDoubled = num + ( (noise && binaural) ? weighting : 0.0 ) )

即使删除了
bool
和数值类型之间的隐式转换,也可以通过首先将
bool
转换为
NSNumber
来显式地将其转换为数值类型

let numDoubled = num + Float(truncating: NSNumber(booleanLiteral: noise)) * weighting

您还可以执行
Float(截断:噪波)
作为简写符号,但该调用隐式地将
bool
转换为
NSNumber
,因此为了清晰起见,最好显式地写出转换。

即使已删除
bool
和数值类型之间的隐式转换,也可以显式地将
bool
转换为数值类型by首先将其转换为
NSNumber

let numDoubled = num + Float(truncating: NSNumber(booleanLiteral: noise)) * weighting
您也可以使用
Float(truncating:noise)
作为简写符号,但该调用会将
bool
隐式转换为
NSNumber
,因此为了清晰起见,最好显式写出转换。

与in(Objective-)不同C其中
nil
0
false
被视为相同的值,具体取决于环境
Int
Bool
在Swift中不相关,Swift
Bool
没有
intValue

let numDoubled = noise ? num + weighting : num
实际上,如果
噪波
,则需要将
权重
添加到
num

let numDoubled = noise ? num + weighting : num

如果确实需要将
false
转换为
0
并将
true
转换为
1
写入

let boolAsInt = aBool ? 1 : 0
与(目标-)C中的
nil
不同,
0
false
被视为相同的值,具体取决于环境
Int
Bool
在Swift中不相关,Swift
Bool
没有
intValue

let numDoubled = noise ? num + weighting : num
实际上,如果
噪波
,则需要将
权重
添加到
num

let numDoubled = noise ? num + weighting : num

如果确实需要将
false
转换为
0
并将
true
转换为
1
写入

let boolAsInt = aBool ? 1 : 0

我不认为这是一种解决方法,因为用布尔值乘以浮点值没有任何意义:)我喜欢这样,它工作得很好,有没有办法同时乘以噪声和双耳?我的例子是:let numOutput=num*(噪声和双耳?权重:0.0)所以我基本上想用双耳和噪声相乘,即使在这种情况下它们中的任何一个为0或为假。:)本质上,我试图让它与双耳和噪声相乘,然后再乘以权重。@LukeIreton更新了我的答案,请检查。如果你想相乘,用
*
替换
。如果我的答案是100和both双耳和噪声=真然后我得到125作为我的返回数,这很好,但我基本上是想让它达到我输入的数字乘以双耳和噪声,然后加权。如果我输入100,双耳和噪声为真,那么输出应该是150,如果我输入100,只有一个布尔值为假,那么只有m将它乘以1,然后再乘以权重,得到125。谢谢你。感谢你的帮助,曼尼,我自己已经计算出了最后一部分。我不认为这是一个解决办法,因为用布尔值乘以浮点值没有任何意义:)我喜欢这个方法,它工作得很好,有没有办法同时乘以噪声和双耳?我的例子是:设numOutput=num*(噪声和双耳加权:0.0)所以我基本上想用双耳和噪声相乘,即使在这种情况下它们中的任何一个为0或为假。:)本质上,我试图让它与双耳和噪声相乘,然后再乘以权重。@LukeIreton更新了我的答案,请检查。如果你想相乘,用
*
替换
。如果我的答案是100和both双耳和噪声=真然后我得到125作为我的返回数,这很好,但我基本上是想让它达到我输入的数字乘以双耳和噪声,然后加权。如果我输入100,双耳和噪声为真,那么输出应该是150,如果我输入100,只有一个布尔值为假,那么只有m将其乘以1,然后再乘以权重,得到125。谢谢。谢谢你的帮助,曼尼,我已经自己算出了最后一部分。:)