Avatar billede encorez Juniormester
10. juli 2019 - 14:28 Der er 6 kommentarer

Gemme "and" og "or" som variabel

Hej

Lad og sige jeg vil teste en del forskellige kombinationer af værdier mod hinanden, inkl at teste kombinationer af "and" og "or" og jeg ønsker at gemme resultatet af "and" og "or" og senere bruge den variabel i en IF.

Eksempel:
Jeg tester at jeg får et ønsket resultat når Y<'5' 'and" X>4, og denne formluar gemmer jeg i SQL.
Senere løber jeg data igennem og nu vil jeg teste denne formular for hvert datapunkt: IF(Y<'5' and X>'4')
Her ønsker jeg at sætte "and" direkte ind fra min gemte formular.

Så inden jeg løber datasettet igennemudlæser min formular til variabler:
$Y_var = sql-output (bliver 5)
$X_var = sql-output (bliver 4)
$logic = sql-output (bliver "and")

Og i en While loop vil jeg så teste med
IF(Y<'$Y_var' $logic X>'$X_var')

Kan det lade sig gøre?
Avatar billede Slettet bruger
10. juli 2019 - 16:46 #1
hvad vil du skrive ned ? en værdi af en beregning med AND/OR ?
eller en sandhedstabel, med TRUE/FALSE ?

du kan jo bare skrive TRUE/FALSE ned, så har du dem
ellers gem beregningens værdi en VAR

ja det kan du sagtens
Avatar billede Slettet bruger
10. juli 2019 - 16:49 #2
IF x=40 AND b=>100 then flag1=TRUE
    {
        gem flag1 i database
    }

kunne man gøre
Avatar billede arne_v Ekspert
10. juli 2019 - 20:30 #3
Jeg har reelt ingen anelse om hvad det er du leder efter.

Men et stykke Java kode:


import java.util.function.BiFunction;
import java.util.function.Function;

public class FuncFun {
    public static void main(String[] args) {
        Function<Integer,Boolean> lt5 = (y) -> y < 5;
        Function<Integer,Boolean> gt4 = (x) -> x > 4;
        BiFunction<Integer,Integer,Boolean> comb = (y, x) -> lt5.apply(y) && gt4.apply(x);
        for(int y = 0; y < 10; y++) {
            for(int x = 0; x < 10; x++) {
                System.out.printf(" %1.1b", comb.apply(y, x));
            }
            System.out.println();
        }
    }
}
Avatar billede encorez Juniormester
10. juli 2019 - 21:01 #4
Hej. Jeg beklager, den er tricky for mig at formulere.
Spørgsmålet er om and og or i en If statement kan angives med en variabel? I mit eksempel $logic.

For at illustrere hvis jeg ikke kan det så er jeg nødt til at lave 2 if sætninger,ellert faktisk 3.

If (Logic    == and) {
  If(x<4 and y<5)
} else{
  If(x<4 or y<5)
}

Hvis jeg kan bruger and som variable så kan jeg gøre det i een If.
If(x<4 $logic y<5)

Håber dette giver menig i at forklare hvad jeg er ude efter.
Men det er ikke sikkert det kan lade sig gøre
Avatar billede arne_v Ekspert
11. juli 2019 - 02:40 #5
Meget traditionelt:


public class Traditional {
    public static void test(boolean and) {
        System.out.println(and + ":");
        for(int y = 0; y < 10; y++) {
            for(int x = 0; x < 10; x++) {
                System.out.printf(" %1.1b", and ? (y < 5 && x > 4) : (y < 5 || x > 4));
            }
            System.out.println();
        }
    }
    public static void main(String[] args) {
        test(true);
        test(false);
    }
}


Mere funktionelt:


package july;

import java.util.function.BiFunction;
import java.util.function.Function;

public class Funcy {
    public static void test(String lbl, Function<Integer,Boolean> f1, Function<Integer,Boolean> f2, BiFunction<Boolean,Boolean,Boolean> comb) {
        System.out.println(lbl + ":");
        for(int y = 0; y < 10; y++) {
            for(int x = 0; x < 10; x++) {
                System.out.printf(" %1.1b", comb.apply(f1.apply(y), f2.apply(x)));
            }
            System.out.println();
        }
    }
    public static void main(String[] args) {
        test("y < 5 and x > 4", y -> y < 5, x -> x > 4, (b1,b2) -> b1 && b2);
        test("y < 5 or x > 4", y -> y < 5, x -> x > 4, (b1,b2) -> b1 || b2);
    }
}
Avatar billede Slettet bruger
11. juli 2019 - 03:46 #6
du har fået noget galt i halsen :)

AND or OR bruges til at skifte rundt på bits, for at få en sandhed der er TRUE/FALSE

Jeg forstår slet ikke dit spørgsmål, men hvad Arnes kode hjælper dig, så er det jo fint :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester