Sono un principiante in Swift quindi alcune cose non mi sono ancora chiare. Spero che qualcuno me lo spieghi:Funzioni e valori restituiti
// Creating Type Properties and Type Methods
class BankAccount {
// stored properties
let accountNumber: Int
let routingCode = 12345678
var balance: Double
class var interestRate: Float {
return 2.0
}
init(num: Int, initialBalance: Double) {
accountNumber = num
balance = initialBalance
}
func deposit(amount: Double) {
balance += amount
}
func withdraw(amount: Double) -> Bool {
if balance > amount {
balance -= amount
return true
} else {
println("Insufficient funds")
return false
}
}
class func example() {
// Type methods CANNOT access instance data
println("Interest rate is \(interestRate)")
}
}
var firstAccount = BankAccount(num: 11221122, initialBalance: 1000.0)
var secondAccount = BankAccount(num: 22113322, initialBalance: 4543.54)
BankAccount.interestRate
firstAccount.deposit(520)
Quindi questo è il codice. Mi chiedo perché lo deposit()
non abbia una freccia di ritorno e una parola chiave di restituzione e lo fa withdraw()
. Quando uso una freccia di ritorno, in quali situazioni, esiste una regola o qualcosa del genere? Non capisco.
Inoltre ... Ognuno è così gentile con le tue risposte, mi sta diventando più chiaro ora.
In All'inizio di questo tutorial è presente un codice di pratica per le funzioni
// Function that return values
func myFunction() -> String {
return “Hello”
}
Immagino che questo valore di ritorno non è necessario qui, ma in esercitazione hanno voluto mostrarci che esiste, ho ragione?
Inoltre, è possibile effettuare un "errore" e utilizzare la freccia di ritorno e il valore nella funzione di deposito in qualche modo? Ho provato con questo:
func deposit(amount : Double) -> Double {
return balance += amount
}
... ma ha generato errore.
Ho visto la codifica avanzata nella mia ultima azienda, stavano creando un negozio online con molte funzioni personalizzate e interessanti e tutto il codice era pieno di frecce di ritorno. Questo mi ha confuso e ho pensato che fosse un default per fare metodi/funzioni in OOP.
Domanda aggiuntiva! Volevo giocare con le funzioni, quindi voglio creare una funzione transferFunds() che trasferisce denaro da un account a un altro. Ho funzionato in questo modo
func transferFunds(firstAcc : Int, secondAcc : Int, funds : Double) {
// magic part
if firstAcc == firstAccount.accountNumber {
firstAccount.balance -= funds
} else {
println("Invalid account number! Try again.")
}
if secondAcc == secondAccount.accountNumber {
secondAccount.balance += funds
} else {
println("Invalid account number! Try again.")
}
}
Questo è un codice semplice che mi è venuto in mente ma so che forse è anche stupido. So che dovrebbe esserci un codice che controlla se ci sono abbastanza fondi nel primo conto da cui prendo i soldi, ma va bene ... giochiamo con questo. Voglio specificare accountNumbers
o qualcos'altro nei parametri all'interno della funzione transferFunds()
e voglio cercare tra tutti gli oggetti/client nella mia banca immaginaria che usano la classe BankAccount
per trovarne uno e quindi trasferire denaro. Non so se ho descritto correttamente il mio problema, ma spero che tu capisca cosa voglio fare. Qualcuno mi puó aiutare per piacere?
Questa non è una domanda Swift in quanto tale, ma piuttosto una domanda di programmazione generale. Immagino, non avendo mai usato Swift, la freccia indica un tipo di ritorno. In questo caso, 'withdraw' restituisce un valore booleano per dire se il prelievo è stato eseguito o meno. Puoi anche fare lo stesso per il deposito, restituire un booleano per dire se il deposito è andato a buon fine. Non c'è una regola dura e veloce per questo, è qualcosa che viene fornito con la pratica. – TEK
Sono così contento di aver iniziato su Pascal quando le funzioni senza un tipo di ritorno sono state chiamate procedure. – Sulthan
@Antonija, il tipo di ritorno 'String' è effettivamente necessario. È necessario dichiarare il tipo di variabile che viene restituito nella funzione. Come per l'ultimo esempio, non puoi usare return prima dell'espressione che usa l'operatore '+ ='. Dovrai aggiungere una nuova riga: ** saldo di ritorno **, o forse in una riga: ** return ++ balance ** (in alcuni linguaggi di programmazione). Fai attenzione che questo tipo di metodo viola il principio CQS come descritto nella mia risposta, perché è sia un comando che una query. – TechWisdom