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 :)
-- 
Igor Peshansky  (note the spelling change!)
IBM T.J. Watson Research Center
X10: Parallel Productivity and Performance (http://x10-lang.org/)
XJ: No More Pain for XML's Gain (http://www.research.ibm.com/xj/)
"I hear and I forget.  I see and I remember.  I do and I understand" -- 
Xun Zi


------------------------------------------------------------------------------
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

Reply via email to