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 !