iphotographer Δημοσ. 14 Οκτωβρίου 2020 Δημοσ. 14 Οκτωβρίου 2020 (επεξεργασμένο) Καλησπέρα. Μια μικρή διευκρίνηση γιατί κάτι δεν έχω καταλάβει καλά. Αναφέρομαι σε function php αν και αυτό που ρωτάω μάλλον πάει σε όλες τις γνωστές γλώσσες... Αν έχω μία function με 4 παράμετρους για παράδειγμα και οι 3 παράμετροι είναι προαιρετικές. Αν σε ένα σημείο θέλω να καλέσω την function με 2 παραμέτρους, πως καθορίζω ποια παράμετρο έχω εισάγει? Παράδειγμα. Έστω οτι θέλω να φτιάξω μία function που να αποθηκευει διαστάσεις ενός επίπλου στην βάση. Θέλω σαν παραμέτρους να δίνω όνομα και αν δεν δώσω τιμή σε κάποια διάσταση, η τιμή να είναι 1. Οπότε: function epiplo(onoma, platos = 1, mikos = 1, ipsos = 1){ mpla mpla mpla mpla } Αν εγώ θέλω να καλέσω την συνάρτηση, βάζοντας μόνο το όνομα και το ipsos, έτσι έχουμε: epiplo("Trapezi", 1.5), πως θα καταλάβει η συνάρτηση οτί το 1,5 αναφέρεται στο ύψος και όχι στο πλάτος ή το μήκος? Επεξ/σία 14 Οκτωβρίου 2020 από iphotographer
Επισκέπτης Δημοσ. 14 Οκτωβρίου 2020 Δημοσ. 14 Οκτωβρίου 2020 Καλησπέρα Τις μεταβλητές στην function, τις περνάς με τη σειρά και να χωρίζουν με , μπορεί ας πούμε στην δική σου να βάλεις, epiplo('ena', ,1.5); Το πλάτος είναι κενό άρα 1 σε αυτή τη περίπτωση
parsifal Δημοσ. 14 Οκτωβρίου 2020 Δημοσ. 14 Οκτωβρίου 2020 Parameter skipping δεν υποστηρίζεται στην PHP. Εξήγηση και πιθανά workarounds: https://stackoverflow.com/questions/1066625/how-would-i-skip-optional-arguments-in-a-function-call
Sacadmerde Δημοσ. 14 Οκτωβρίου 2020 Δημοσ. 14 Οκτωβρίου 2020 56 λεπτά πριν, iphotographer είπε Καλησπέρα. Μια μικρή διευκρίνηση γιατί κάτι δεν έχω καταλάβει καλά. Αναφέρομαι σε function php αν και αυτό που ρωτάω μάλλον πάει σε όλες τις γνωστές γλώσσες... Αν έχω μία function με 4 παράμετρους για παράδειγμα και οι 3 παράμετροι είναι προαιρετικές. Αν σε ένα σημείο θέλω να καλέσω την function με 2 παραμέτρους, πως καθορίζω ποια παράμετρο έχω εισάγει? Παράδειγμα. Έστω οτι θέλω να φτιάξω μία function που να αποθηκευει διαστάσεις ενός επίπλου στην βάση. Θέλω σαν παραμέτρους να δίνω όνομα και αν δεν δώσω τιμή σε κάποια διάσταση, η τιμή να είναι 1. Οπότε: function epiplo(onoma, platos = 1, mikos = 1, ipsos = 1){ mpla mpla mpla mpla } Αν εγώ θέλω να καλέσω την συνάρτηση, βάζοντας μόνο το όνομα και το ipsos, έτσι έχουμε: epiplo("Trapezi", 1.5), πως θα καταλάβει η συνάρτηση οτί το 1,5 αναφέρεται στο ύψος και όχι στο πλάτος ή το μήκος? Αυτό που ζητάς γίνεται στην Python, σχεδόν όπως πας να το σκεφτείς. Για παράδειγμα, σε Python μπορείς να έχεις: def foo(onoma, platos=1, mikos=1, ipsos=1): ... και μετά μπορείς κάνεις: x1 = foo('test', ipsos=3) x2 = foo('test2', platos=2) x3 = foo('test2', mikos=4, platos=10)
Επισκέπτης Δημοσ. 14 Οκτωβρίου 2020 Δημοσ. 14 Οκτωβρίου 2020 (επεξεργασμένο) 16 minutes ago, parsifal said: Parameter skipping δεν υποστηρίζεται στην PHP. Εξήγηση και πιθανά workarounds: https://stackoverflow.com/questions/1066625/how-would-i-skip-optional-arguments-in-a-function-call Όντως. Αλλά μπορείς να περνάς ένα array σαν μοναδική παράμετρο και μέσα στη function να κάνεις τις πράξεις Επεξ/σία 14 Οκτωβρίου 2020 από Επισκέπτης
kosnik Δημοσ. 14 Οκτωβρίου 2020 Δημοσ. 14 Οκτωβρίου 2020 function epiplo(onoma, platos = null, mikos = null, ipsos = null) Check poia den einai null, gia ta ypoloipa vazeis tis default times pou tis kratas allou. Panta otan tin kaleis tha dineis times gia ola (null gia osa thes na paroun default times) p.χ. epipla('karekla',null,null,3) Or function epiplo(onoma, array diastaseis) opote tha pernas san deutero orisma ena array px distaseis = [mikos=>null, platos=>null, ispos=>3]
dhmm Δημοσ. 15 Οκτωβρίου 2020 Δημοσ. 15 Οκτωβρίου 2020 Καλημέρα. Αν και δεν γνωρίζω για ποιό λόγο χρειάζεστε αυτές τις παραμέτρους όλες μαζι στην συνάρτηση θα μπορούσα να σας πρωτείνω τα παρακάτω : 1) Θεωρώ πως δεν πρέπει να έχετε πολλές παραμέτρους στιε συναρτήσεις αν δεν είνα πολυ αναγκαίο και πάλι δεν πρέπει. Σε αυτή την περίπτωση δημιουργείται ένα instance μιας κλάσης και στέλνεται σαν παράμετρο το instance με τα δεδομένα. Στην περίπτωσή σας : function epiplo(Epiplo epiplo) { ... } //ΟΠΟΥ Epiplo class Epiplo { public ?string onoma; public int mikos; //ktl } 2) Μπορείται να κάνετε function με null value params function epiplo(onoma, platos = null, mikos = null, ipsos = null){ if(platos === null) { //Den exete eisagei ara... //Mporei ontos na einai 1 //Etsi den tha xerete an exete eisagei h oxi platos = 1; } }
iphotographer Δημοσ. 16 Οκτωβρίου 2020 Μέλος Δημοσ. 16 Οκτωβρίου 2020 Ευχαριστώ πολύ παιδιά για τις απαντήσεις σας. Το κατανόησα!!!
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα