Open PabloIsCoding opened 1 month ago
Here's how i understand it:
x := x
wouldn't bee necessary in C. It's more meant to show that you can't mutate the passed parameter, unless it contains pointers like the slice, etc mentioned@gingerBill can explain this better
If you come from C, all parameters do this copy implicitly.
void foo(int x) {
x = 123; // I can change it
}
x
in this case is a variable copy, and you can mutate it.
In Odin, you have explicitly copy the parameter to state you want to mutate it in some way.
foo :: proc(x: i32) {
x = 123 // INVALID
}
foo :: proc(x: i32) {
x := x
x = 123 // allowed since `x` has been explicitly copied
}
As for (3), yes and Odin makes this clear. It wasn't clear in C before, even if in many cases the optimizer can remove it.
https://github.com/odin-lang/odin-lang.org/blob/56ba2d01a1ea53a02b934b70733e9fb04ce8a864/content/docs/overview.md?plain=1#L670C1-L680C4
Hi, I was reading the Odin language overview and I found the above a bit confusing. A few reasons:
x := x
?Since I don't really understand how this works I can't say how this should be rephrased (if at all) but I thought it might be helpful to give some feedback on this.