Hi Igor, It's only a matter of code which is easy to be understood. The method below compiles:
public def a() { val T = 5; val x : Array[Int] = new Array[Int]([T]); // clear val y : Array[Int] = new Array[Int][T]; // confused, IMHO } Thanks Richard Gomes M: +44(77)9955-6813 http://tinyurl.com/frgomes twitter: frgomes JQuantLib is a library for Quantitative Finance written in Java. http://www.jquantlib.org/ twitter: jquantlib On 19/11/10 15:34, Igor Peshansky wrote: > Unfortunately, since Array is invariant, the inferred type may be > too precise as well, and thus this syntax is also used to force a > less precise type where needed. A prime example of this is > String.format(), which expects an Array[Any]. The inferred type of > [1,2,3,4] is Array[Int], which is not assignable to Array[Any]. So, > the choices are to force the inference to go the way you want by > explicitly casting one of the elements, namely "[1 as Any, 2, 3, 4]", > or to use this syntax: "new Array[Any] [1, 2, 3, 4]". > Igor > > Bard Bloom/Watson/i...@ibmus wrote on 11/19/2010 07:36:16 AM: > >> Well, the short-and-simple array constructor is like this: >> [1,2,3,4] >> which produces an Array[Int](1). That type, btw, means "An array of > Ints >> with 1 dimension." >> >> But suppose that you want an Array[Int{self!=0}]'s? -- an array of >> non-zero Ints? >> [1,2,3,4] looks like that, since they're all nonzero, but the type rules >> make it just Array[Int](1). >> >> So, by analogy with (1) Java array constants, and (2) object > construction, >> we let you tell what >> type you actually want in the array, by sticking on a prefix "new > Array[Int >> {self!=0}]" -- or more >> generally "new Array[T]". >> new Array[Int{self != 0}] [1,2,3,4] >> is an array of non-zero Ints, by type. >> >> I recommend using the simple syntax when you can. I believe that it >> usually does the right thing, and >> in particular does so in this case: >> >> val test2<: Array[Place] = [host]; >> >> (Apologies for sending you untested code.) >> >> If that doesn't give you the type you want, you can use the more > detailed >> constructor. But we hope >> that the simple constructor does what is wanted most of the time. >> >> See the spec: section 11.26 >> >> -- Bard >> >> >>> Re: [X10-users] Array constructor? >>> >>> humm..... >>> >>> val test2 : Array[Place] = new Array[Place](host); >>> >>> *does not* compile... actually. >>> >>> I've tried this too: >>> >>> for (host in Place.places()) { >>> val test1 : Array[Place] = new Array[Place][host,host,host,host]; >>> } >>> >>> .. which leads me to think that: >>> >>> 1. I'm declaring an Array with parametric type Place :: Array[Place] >>> 2. I'm initializing this Array[Place] with 4 elements of value "host" >>> >>> If I'm correct, the conclusion is that the syntax is pretty confused > :( >>> >>> Thanks >>> >>> Richard Gomes >>> M: +44(77)9955-6813 >>> http://tinyurl.com/frgomes >>> twitter: frgomes >>> >>> JQuantLib is a library for Quantitative Finance written in Java. >>> http://www.jquantlib.org/ >>> twitter: jquantlib >>> >>> On 19/11/10 08:40, Richard Gomes wrote: >>>> Hi guys, >>>> >>>> I've seen code more or less like this: >>>> >>>> for (host in Place.places()) { >>>> val workers : Array[Place] = new Array[Place][host]; >>>> ... >>>> } >>>> >>>> What it means, exactly? >>>> I'm confused with text "[host]" which looks strange. >>>> >>>> >>>> I've changed "[host]" by "(host)" like shown below and it compiles. >>>> >>>> for (host in Place.places()) { >>>> val test1 : Array[Place] = new Array[Place][host]; // >> compiles >>>> val test2 : Array[Place] = new Array[Place](host); // >> compiles >>>> ... >>>> } >>>> >>>> So... looks like the compiler is automagically interpreting "[host]" > as >>>> "(host)" ??? >>>> >>>> >>>> Thanks a lot >>>> >>>> Cheers :) ------------------------------------------------------------------------------ Beautiful is writing same markup. Internet Explorer 9 supports standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3. Spend less time writing and rewriting code and more time creating great experiences on the web. Be a part of the beta today http://p.sf.net/sfu/msIE9-sfdev2dev _______________________________________________ X10-users mailing list X10-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/x10-users