swift 中的调用函数
Calling function in swift
构建 iOS 应用程序时,我在 Swift 中调用函数时遇到问题。
@IBOutlet weak var vyseHypoteky: UITextField!
@IBOutlet weak var dobaSplaceni: UITextField!
@IBOutlet weak var urokovaSazba: UITextField!
@IBOutlet weak var mesicniSplatka: UITextField!
@IBAction func zmenaVyseHypoteky(sender: UISlider) {
var currentValue = Int(sender.value)
vyseHypoteky.text = "\(currentValue)"
vypoctiSplatku()
}
@IBAction func zmenaDobySplaceni(sender: UISlider) {
var currentValue = Int(sender.value)
dobaSplaceni.text = "\(currentValue)"
}
@IBAction func zmenaUrokoveSazby(sender: UISlider) {
var currentValue = Int(sender.value)
urokovaSazba.text = "\(currentValue)"
}
func vypoctiSplatku () {
let HU:Int? = vyseHypoteky.text.toInt()
let ipa:Int? = urokovaSazba.text.toInt()
let n:Int? = dobaSplaceni.text.toInt()
var ipm = ipa! / 12
var zavorka = 1+ipm
var vypoctenaZavorka = mocnina(mocnenec: zavorka, mocnitel: n)
var citatel = HU! * ipm * vypoctenaZavorka
var jmenovatel = vypoctenaZavorka - 1
var splatka = citatel / jmenovatel
mesicniSplatka.text = ("\splatka")
}
func mocnina (mocnenec: Int, mocnitel: Int) -> Int {
var mocnina = 1
for _ in 1...mocnitel {
mocnina *= mocnenec
}
return mocnina
}
该应用程序正在根据我的公式计算一个数字。我想用我的函数来计算 x^y,这是 "mocnina" 函数,我想在其中使用两个 int,x 是 "mocnenec",y 是 "mocnitel".
最后我想将最终的整数从变量 "splatka" 发送到文本输入输出字段 "mesicniSplatka"。
但是我在调用函数时遇到错误 "mocnina" --> var vypoctenaZavorka = mocnina(mocnenec: zavorka, mocnitel: n)
Extraneous argument label 'mocnenec:' in call
Value of optional type 'Int?' not unwrapped; did you mean to use '!' or '?'?
最后 mesicniSplatka.text = ("\splatka")
Invalid escape sequence in literal
如何解决?谢谢你帮助了一个新手 :)
在您的代码中,n
被声明为 Int?
类型,这意味着 "Optional Int
"。这是正常的,因为 toInt()
函数不能保证成功,如果文本不能转换为整数,则可能 return nil
。所以,你需要先打开它,像这样:var vypoctenaZavorka = mocnina(mocnenec: zavorka, mocnitel: n!)
。或者,如果您不确定从字符串转换是否成功,请执行以下操作:
let HU:Int? = vyseHypoteky.text.toInt()
let ipa:Int? = urokovaSazba.text.toInt()
let n:Int? = dobaSplaceni.text.toInt()
if ipa != nil {
var ipm = ipa! / 12
var zavorka = 1+ipm
if n != nil {
var vypoctenaZavorka = mocnina(mocnenec: zavorka, mocnitel: n)
// etc...
}
}
问题是 n
是一个包装:
var n:Int?
所以你有几个选择,你可以在使用它时更改代码以解包(在执行此操作之前检查 nil
可能是个好主意,因为如果 n
为零):
var vypoctenaZavorka = mocnina(mocnenec: zavorka, mocnitel: n!)
或者您可以在创建时解包:
let n:Int = dobaSplaceni.text.toInt()!
如果你想更好地理解"when to use optionals",我已经对这个问题写了很长的解释:
构建 iOS 应用程序时,我在 Swift 中调用函数时遇到问题。
@IBOutlet weak var vyseHypoteky: UITextField!
@IBOutlet weak var dobaSplaceni: UITextField!
@IBOutlet weak var urokovaSazba: UITextField!
@IBOutlet weak var mesicniSplatka: UITextField!
@IBAction func zmenaVyseHypoteky(sender: UISlider) {
var currentValue = Int(sender.value)
vyseHypoteky.text = "\(currentValue)"
vypoctiSplatku()
}
@IBAction func zmenaDobySplaceni(sender: UISlider) {
var currentValue = Int(sender.value)
dobaSplaceni.text = "\(currentValue)"
}
@IBAction func zmenaUrokoveSazby(sender: UISlider) {
var currentValue = Int(sender.value)
urokovaSazba.text = "\(currentValue)"
}
func vypoctiSplatku () {
let HU:Int? = vyseHypoteky.text.toInt()
let ipa:Int? = urokovaSazba.text.toInt()
let n:Int? = dobaSplaceni.text.toInt()
var ipm = ipa! / 12
var zavorka = 1+ipm
var vypoctenaZavorka = mocnina(mocnenec: zavorka, mocnitel: n)
var citatel = HU! * ipm * vypoctenaZavorka
var jmenovatel = vypoctenaZavorka - 1
var splatka = citatel / jmenovatel
mesicniSplatka.text = ("\splatka")
}
func mocnina (mocnenec: Int, mocnitel: Int) -> Int {
var mocnina = 1
for _ in 1...mocnitel {
mocnina *= mocnenec
}
return mocnina
}
该应用程序正在根据我的公式计算一个数字。我想用我的函数来计算 x^y,这是 "mocnina" 函数,我想在其中使用两个 int,x 是 "mocnenec",y 是 "mocnitel".
最后我想将最终的整数从变量 "splatka" 发送到文本输入输出字段 "mesicniSplatka"。
但是我在调用函数时遇到错误 "mocnina" --> var vypoctenaZavorka = mocnina(mocnenec: zavorka, mocnitel: n)
Extraneous argument label 'mocnenec:' in call
Value of optional type 'Int?' not unwrapped; did you mean to use '!' or '?'?
最后 mesicniSplatka.text = ("\splatka")
Invalid escape sequence in literal
如何解决?谢谢你帮助了一个新手 :)
在您的代码中,n
被声明为 Int?
类型,这意味着 "Optional Int
"。这是正常的,因为 toInt()
函数不能保证成功,如果文本不能转换为整数,则可能 return nil
。所以,你需要先打开它,像这样:var vypoctenaZavorka = mocnina(mocnenec: zavorka, mocnitel: n!)
。或者,如果您不确定从字符串转换是否成功,请执行以下操作:
let HU:Int? = vyseHypoteky.text.toInt()
let ipa:Int? = urokovaSazba.text.toInt()
let n:Int? = dobaSplaceni.text.toInt()
if ipa != nil {
var ipm = ipa! / 12
var zavorka = 1+ipm
if n != nil {
var vypoctenaZavorka = mocnina(mocnenec: zavorka, mocnitel: n)
// etc...
}
}
问题是 n
是一个包装:
var n:Int?
所以你有几个选择,你可以在使用它时更改代码以解包(在执行此操作之前检查 nil
可能是个好主意,因为如果 n
为零):
var vypoctenaZavorka = mocnina(mocnenec: zavorka, mocnitel: n!)
或者您可以在创建时解包:
let n:Int = dobaSplaceni.text.toInt()!
如果你想更好地理解"when to use optionals",我已经对这个问题写了很长的解释: