我正在使用IBM的online Swift sandbox而我正在尝试运行此代码,但它给了我一个错误:
代码:
var a: Double = 1.0
var b: Double = 2.0
var c: Double = 3.0
var x: Double = 0.0
func x_func(a_var: Double, b_var: Double, c_var: Double) -> Double {
x = (-b + (b^2 - 4*a*c)^(1/2))/(2*a)
return x
}
print(x_func(a_var: a, b_var: b, c_var: c))
print(a)
print(b)
print(c)
错误:
<unknown>:0: error: unable to execute command: Killed
<unknown>:0: error: compile command failed due to signal (use -v to see invocation)
有人可以帮我找出错误吗?我是Swift的新手,所以我不会在这里看到错误。
答案 0 :(得分:4)
如果您想使用指数,请尝试使用pow
,^
不能与Swift一起使用。使用Swift ^
产生按位XOR - 而不是指数。
import Foundation
var a: Double = 1.0
var b: Double = 2.0
var c: Double = 3.0
var x: Double = 0.0
func x_func(a_var: Double, b_var: Double, c_var: Double) -> Double {
x = (-b + pow((pow(b, 2) - 4*a*c), 1/2))/2*a
return x
}
确保在使用IBM Sandbox或HackerRank之类的东西时导入Foundation框架!我知道这很容易忘记,如果你这样做会引起很多麻烦。
此外,除非您使用x_func
方法进行额外的计算,否则您不会要求传递参数,因为您不会甚至使用。您可以删除属性,或者将函数更改为不接受任何变量 - 删除属性并将其更改为以下内容可能更有效:
import Foundation
func x_func(a: Double, b: Double, c: Double) -> Double {
x = (-b + pow((pow(b, 2) - 4*a*c), 1/2))/2*a
return x
}