Zitat von Marco Bungart <m.bung...@gmx.net>: > Hi Michael, >
Hi Marco, > Am 16.10.2014 um 22:13 schrieb Michael Dietrich: >> Hello, >> >> I'm getting started with X10 and am a bit stuck with the handling of >> Rails (I think I might get the same problem with Arrays and so on). >> >> Let's say I create the following: >> >> val bla = new Rail[Long](10); >> bla(0) = 2343; >> bla(1) = 4534; >> bla(2) = 3424; >> for(i in 0..9) >> bla(i)=42; >> Console.OUT.print("Content: "); >> Console.OUT.println(bla); >> >> I get 42 ten times as an output. >> My first question: At least the first three values of my Rail are set. >> As far as I understood "val" makes them become immutable. So why can I >> turn them all into 42? > > The semantics are not like in C(++) (where the Array AND its entry are > immutable), but only the reference to the array is immutable, like in > Java. Meaning: you can modify single entries, but you cannot write > bla = new Rail[Long] (...); > > after the first initialization. > > Yes, I'm more familiar with C/C++ than with Java. ;) >> >> My second question: If I change the for-loop into >> >> for(b in bla) >> b=42; >> >> I get the expected error message by the compiler though it's actually >> no formal change. Or is there any? >> >> bye >> Michael > > You should wirte the loop as > for (b:Long in bla) { b = 42;} > > which results in this compiler-error: > Final variable might already have been initialized. > Final variable: b > > Writing > for (var b:Long in bla) { b = 42; } > Leads to: > Enhanced for loop may not have var loop index. var b: Long{amb} > Final variable might already have been initialized. > Final variable: b > > In other words: if you use primitive data types (int, long, double, > ...), you will not be able to change them with a foreach-loop. Even if > you were able to change the value of b, you would change ONLY the value > of b, since primitives are copied and not referenced. > If, on the other hand, your Rail holds objects, the loop-variable (b) > will hold references. While b is still a val, you would be able to > change attributes of b (just like you were able to change entries in the > Rail bla despite it being a val) and since b is only a reference to the > object in the Rail, you would get the desired result. > Okay, thanks. > I hope i was able to help. Feel free to ask further questions. > I think in the future there will be much more since I'm writing my bachelors' thesis about high performance programming languages including X10. ;-) > Cheers, > Marco > > > Bye >> >> >> ------------------------------------------------------------------------------ >> Comprehensive Server Monitoring with Site24x7. >> Monitor 10 servers for $9/Month. >> Get alerted through email, SMS, voice calls or mobile push notifications. >> Take corrective actions from your mobile device. >> http://p.sf.net/sfu/Zoho >> _______________________________________________ >> X10-users mailing list >> X10-users@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/x10-users >> > > ------------------------------------------------------------------------------ > Comprehensive Server Monitoring with Site24x7. > Monitor 10 servers for $9/Month. > Get alerted through email, SMS, voice calls or mobile push notifications. > Take corrective actions from your mobile device. > http://p.sf.net/sfu/Zoho > _______________________________________________ > X10-users mailing list > X10-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/x10-users ------------------------------------------------------------------------------ Comprehensive Server Monitoring with Site24x7. Monitor 10 servers for $9/Month. Get alerted through email, SMS, voice calls or mobile push notifications. Take corrective actions from your mobile device. http://p.sf.net/sfu/Zoho _______________________________________________ X10-users mailing list X10-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/x10-users