| Autor | Zpráva | ||
|---|---|---|---|
| Ten levej Profil * |
#1 · Zasláno: 9. 3. 2015, 15:57:01
Cau, potreboval bych vedet jestli se dá uložit operátor do proměnné a pak použít v početní operaci.
Např: var operator = "+"; var operace = 3+operator+2; Kdyz si to pak vypisu tak mi to hodi 3+2, ale ja chci aby to hodilo 5. Diky |
||
| juriad_ Profil * |
#2 · Zasláno: 9. 3. 2015, 16:12:22
Primo ne. Ale muzes si napsat funkci.
var plus = function(a,b) {return a+b;}var operace = plus(2, 3); // 5
|
||
| Ten levej Profil * |
#3 · Zasláno: 9. 3. 2015, 16:19:38
Jo to by slo, diky.
|
||
| xROAL Profil |
Šlo by to s použitím evalu, avšak treba byť opatrný v tom, čo si do premenných pustíš.
Eval vykoná akýkoľvek kód, ktorý mu dáš ako keby je to Našiel som iný spôsob, ktorý vyzerá podstatne bezpečnejšie: function add(a, b) {
return a + b;
}
function multiply(a, b) {
return a * b;
}
function divide(a, b) {
return a / b;
}
var operations = {
'+': add,
'*': multiply,
'/': divide
};
var a = 2;
var b = 5;
var operation = '+';
alert(operations[operation](a, b));Upravené. Už je to v JS a nie PHP. Ospravedlňujem sa, asi som sa moc ponáhľal. |
||
| juriad_ Profil * |
#5 · Zasláno: 9. 3. 2015, 16:25:34
xROAL:
Bavime se tu o JS, ale nastesti tvuj prispevek je platny jen s minimalnimi zmenami. Ta nejvetsi je, ze v poli $operations by byly primo ty funkce a ne jen jejich nazvy. |
||
| xROAL Profil |
#6 · Zasláno: 9. 3. 2015, 16:37:22
juriad:
Pardon, to som si nejako vôbec neuvedomil a hneď som Googlil možnosti v PHP. Upravím pôvodný príspevok. |
||
| Joker Profil |
#7 · Zasláno: 9. 3. 2015, 17:18:13
xROAL [#4]:
ad eval: Kromě uvedených nevýhod navíc pro něco na způsob kalkulačky eval ani není vhodný, protože jakmile mi přestane stačit +, -, *, /, nastanou potíže. Jinak je otázka, jestli ten způsob s uložením funkce do proměnné má výhody proti klasickému řešení: function vypocet(prvni, druhy, operator) {
switch (operator) {
case "+":
return prvni + druhy;
case "-" :
return prvni - druhy;
case "*":
return prvni * druhy;
case "/":
return prvni / druhy;
}
}
var a = 2;
var b = 5;
var operation = '+';
alert(vypocet(a, b, operation);Tohle mi pro méně složité situace připadá snadné a přehledné. Většinou asi nebude třeba to moc překombinovávat. I když by určitě šlo vyrobit „enterprise“ řešení se sadou tříd implementujících rozhraní IOperation a třídou OperationFactory :-) |
||
| 1Pupik1989 Profil |
#8 · Zasláno: 9. 3. 2015, 19:57:45
Já bych to řešil přes prototype.
Number.prototype.add = function(b){
return this+b;
};
Number.prototype.sub = function(b){
return this-b;
};
Number.prototype.multiply = function(b){
return this*b;
};
Number.prototype.divide = function(b){
return this/b;
};
var result = (5).add(8).multiply(2);
alert(result); |
||
| Chamurappi Profil |
Reaguji na 1Pupika1989:
Já ne. Přišlo by mi to trošku praštěné :-) Tvůj kód ukazuje, jak by šlo nahradit standardní matematické operátory, ale nikoliv, jak určit matematickou operaci pomocí jiné proměnné. To by se dělalo takto: var operaceA = "add"; var operaceB = "multiply"; var result = (5)[operaceA](8)[operaceB](2); Reaguji na xROALa: „Šlo by to s použitím evalu“ Cituji: „If the argument is an expression, eval() evaluates the expression. If the argument is one or more JavaScript statements, eval() executes the statements.“ – to není pravda, žádné rozhodování mezi příkazy a výrazy se neděje. Argument je vždy vyhodnocený, jako kdyby to byl celý skript. |
||
|
Časová prodleva: 11 let
|
|||
0