David Bernard | 23 Dec 12:44
Picon
Gravatar

Re: Scala Object Notation ( SCON? )

I thinks that with some change in Property you could support a builder approach that support
val w = new Widget()
	.name("MyWidget")
	.height(10)
	.children(label, panel, button)

my 2 cents.

/davidB

Andrés Testi wrote:
> Yes, but I don't like the fact of create a subclass of Person. I just
> want to instantiate a Person. Suppose you have this Widget class:
> 
> class Widget{
>   val name  = new Property("")
>   val width = new Property(0)
>   val height = new Property(0)
>   val children  = new Property(Array[Widget]())
> }
> 
> To populate the Widget properties without Object notation, you need to
> write the next code
> 
> val w = new Widget
> p.name() = "MyWidget"
> p.height() = 10
> p.children() = Array(
>   label, panel,button
> )
> 
> the previous code is not Property-Editor friendly, because the
> "programmatic" nature. Then, a declarative syntax is the key. But
> creating annonimous class is not declarative but programmatic, because
> I would to assign a property 2 times:
> 
> new Widget{
>   name="MyWidget"
>   name="YourWidget"
> }
> 
> In the other hand, I don't like to subclass Widget, because I just
> want to instantiate Widget.
> 
> 2007/12/22, martin odersky <martin.odersky <at> epfl.ch>:
>>> Hello:
>>> Is it possible to instantiate scala objects in a declarative way like
>>> JSON. I think this would be a solution:
>>>
>>> val p = new Person{
>>>    name = "Peter"
>>>    age = 20
>>>    friends = Array(
>>>       new Person{
>>>           name = "Gary"
>>>       }
>>>    )
>>>
>>> }
>>>
>> Sure. That you wrote is legal Scala, assuming you declared Person like this:
>>
>>   class Person {
>>      var name: String = ""
>>      var age: Int = 99
>>      var friends: Array[Person] = Array()
>>   }
>>
>> But maybe that's not what you wanted?
>>
>> Cheers
>>
>>  -- Martin
>>


Gmane