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

Reply via email to