在同一函数内的其他计算中使用函数返回



我已经在ObservableObject类中的函数中计算了一个值,现在我想在类中的另一个计算中使用返回的值。

代码如下,注意事项:-

  1. hole1index是从Core data中获取的数据项。
  2. 第一个函数(p1h1shots)工作完美,返回正确的值。
  3. 第二个函数(p1h1net)需要使用p1h1shots的输出来计算返回值。
  4. 我试图以多种方式构建第二个函数,但不断获得类似的错误信息,如"无法转换类型值"(Int16) ->显示的代码在p1h1net的返回行上有这个错误消息。

我对Swiftui比较陌生,所以可能会错过一些基本的东西,任何指示或线索将不胜感激。如果有任何额外的信息可以帮助,请告诉我。

Thanks in advance

import SwiftUI
import CoreData
class ScoreManager : ObservableObject {

@Published var player1 = ""
@Published var player2 = ""
@Published var p1handicap = 0
@Published var p2handicap = 0
@Published var p1hole1gross = 0
@Published var p1hole2gross = 0

func p1h1shots(hole1index: Int16) -> Int16 {

let hand = Int16(p1handicap)
let shot = hand - hole1index

if shot < 0 {
return Int16(0)
}

if shot < 0 {
return Int16(0)
}

if shot >= 0 && shot < 18 {
return Int16(1)
}

if shot >= 18 && shot < 36 {
return Int16(2)
}

if shot >= 36 && shot < 54 {
return Int16(3)
}
return Int16(0)
}
func p1h1net() -> Int16 {

let gross = Int16(p1hole1gross)
let shot = p1h1shots

return Int16(gross - shot)

}
}

首先,第二个if shot < 0表达式是多余的。

如果没有括号,您将分配函数对于shot,您必须使用参数

来调用它。
let shot = p1h1shots(hole1index: someInt16)

switch

可以更有效地写入p1h1shots
func p1h1shots(hole1index: Int16) -> Int16 {
let hand = Int16(p1handicap)
let shot = hand - hole1index

switch shot {
case 0..<18: return 1 // the literal is returned as Int16
case 18..<36: return 2
case 36..<54: return 3
default: return 0
}
}

或更短的

func p1h1shots(hole1index: Int16) -> Int16 {
let hand = Int16(p1handicap)
let shot = hand - hole1index

return 0..<54 ~= shot ? shot / 18 + 1 : 0
}

最新更新