Topic de GrachidZoulaone :

this->state.getPlayer()[0].getWeapon().getX();

Le 17 novembre 2021 à 18:36:37 :
std::function<int(std::function<void(int&)>)> r = [](auto f){ int a=0; f(a); return a; };
int c = r([](int& b){ b = 1; });

Combien vaut c ? :)

Pour les jean-Python qui n'ont rien compris, r est une abstraction correspondant à une fonction qui prend comme unique argument une fonction qui prend une référence sur un int et ne retourne rien, et qui retourne pour sa part un int.

Dans r on met la fonction (lambda) qui suit jusqu'au point virgule.
Ensuite, c correspond à l'application de r en la fonction f qui se sert de la référence qui lui est passée pour écrire un 1 à cet endroit.
Dans r, la référence en question pointe vers un zéro écrit sur la pile, qui devient un 1 et qui est retourné par r ensuite (par copie).

Donc le résultat, c'est 1.

Le 17 novembre 2021 à 18:33:48 :

Le 17 novembre 2021 à 18:31:15 :

Le 17 novembre 2021 à 18:27:25 :

Le 17 novembre 2021 à 18:24:20 :
Y a rien de dingue

le seul pointeur la c'est vers la structure du player

weapon_x est une fonction non ?

typedef struct {
int weapon_x;
} Player;

player = malloc(sizeof(Player) * n);
player[0].weapon_x

comme t'avais écrit weapon_x(player[0]) avant j'ai conclu que c'était la meme meme chose soit une fonction

Le 17 novembre 2021 à 18:45:29 :

Le 17 novembre 2021 à 18:44:08 :

Le 17 novembre 2021 à 18:42:59 Elilalilolulu a écrit :
après je dis ça, j'ai jamais vraiment fait de C++, juste des souvenir de quand j'essayais un peu tout les langages

tu as néanmoins raison :ok:

tu peux passer un pointeur sans '&' dans f(a) ? Ça fait ça automatiquement ?

Ben oui, c'est à ça que servent les références hein, sinon autant utiliser des pointeurs :hap:

Le 17 novembre 2021 à 18:45:29 okhe2000 a écrit :

Le 17 novembre 2021 à 18:44:08 :

Le 17 novembre 2021 à 18:42:59 Elilalilolulu a écrit :
après je dis ça, j'ai jamais vraiment fait de C++, juste des souvenir de quand j'essayais un peu tout les langages

tu as néanmoins raison :ok:

tu peux passer un pointeur sans '&' dans f(a) ? Ça fait ça automatiquement ?

c'est une référence, pas un pointeur

c'est comme si tu utilisais un pointeur sauf que tu n'as pas besoin de faire &a pour passer en paramètre et *b = 1;pour modifier l'entier

Le topic a bidé, je le relance avec la traduction du code du khey en Rust :hap:

fn main() {
    let r = |f: fn(&mut i32)->()| {
        let mut x = 0;
        f(&mut x);
        x
    };
    let c = r(|x| {*x = 1;});
    println!("{}",c);
}

Le compilateur est assez intelligent pour caster la closure passé à r en fonction fn(&mut i32)->()
:hap:

Débidage express seconde tentative, cette fois en Python, ne me forcez pas à écrire du code Java pour attirer les golems svp :hap:

def r(f):
    x = [0]
    f(x)
    return x[0]

def inc(t):
    t[0] = 1

c = r(inc)
print(c)

Données du topic

Auteur
GrachidZoulaone
Date de création
17 novembre 2021 à 18:19:30
Nb. messages archivés
26
Nb. messages JVC
25
Voir le topic sur JVC

Afficher uniquement les messages de l'auteur du topic

En ligne sur JvArchive
JvArchive compagnon
Découvrez JvArchive compagnon, l'userscript combattant la censure abusive sur le 18-25 !