簡體   English   中英

用於提取數學的類或結構(Swift)

[英]class or struct for extracting maths (Swift)

大家好,我對編程非常陌生,這正變成一項使命。

我正在嘗試創建一個具有函數的類來進行一些基本的數學運算。 但是,我仍在學習如何提取新值,並且可以在類/函數中傳遞或傳遞給另一個。

這是我到目前為止所擁有的

class fuel {
var rate = 3.7
var laps: Double = 13.0
var totalFuel: Double

init (rate: Double, laps: Double, totalFuel: Double){
    self.rate = rate
    self.laps = laps
    self.totalFuel = totalFuel

    }
func fuelMaths (fuel: Double) -> Double {
    self.totalFuel = (rate * Double(laps))
    print(self.totalFuel)

    }

} fuelMaths(self.totalFuel)

調用“ fuelMaths”時出現無法解析的標識符錯誤,或者我的意思是創建結構嗎?

提前致謝。

對於類與結構,這似乎是一個更好的選擇,因為它只包含一些都是值類型的存儲屬性。

即便如此,這里還是有問題:

1)您的fuelMaths實例方法未返回值。 您的實現應類似於以下內容:

func fuelMaths(fuel:Double) -> Double {
    // "someValue" contains your result
    return someValue
}

2)出現無法解析的標識符錯誤的原因是,您需要首先聲明fuel的實例,然后在該實例上調用fuelMaths

// someRate, someLaps, someTotal, and someFuelValue previously defined

let myFuel = fuel(rate: someRate, laps: someLaps, totalFuel: someTotal)
let myReturnedValue = myFuel.fuelMaths(someFuelValue)

最后,看來totalFuel是計算屬性而不是存儲屬性的良好候選者。 這樣就無需使用fuelMaths方法。 只需執行計算屬性內部的fuelMaths中的計算即可。 這也意味着您的初始化程序只需要為ratelaps提供兩個參數:

var totalFuel: Double {
    return rate * laps
}

init(rate:Double, laps:Double) { //... }

還有一件事,約定是將類和結構的名稱大寫。

編輯:

您的代碼的類版本可能如下所示:

class Fuel {
    var rate = 3.7  // default value tells compiler this is a Double
    var laps = 13.0
    var totalFuel: Double {
        return rate * laps
    }

    init(rate:Double, laps:Double) {
        self.rate = rate
        self.laps = laps
    }
}

代碼的結構版本可能如下所示(注意,與類不同,它不需要您顯式定義初始化程序):

struct Fuel {
    var rate = 3.7
    var laps = 13.0
    var totalFuel: Double {
        return rate * laps
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM