I can return an instance of the type being used by returning "This" from a method. Is there a way to return a list of instances of type being used. returning This[] does not seem to work.
brianSun 10 Jan 2010
That would be a nice feature, but I'd have to give that some thought regarding covariance and contravariance. I'm surprised I haven't run across that use case myself.
furyFri 15 Jan 2010
Would this be the equivalent of keeping a static list of all the instances created?
kaushikFri 15 Jan 2010
No, this would just mean that the method would always return a list of instances of the Type being used
eg.,
class Parent{
This[] values(){
..
}
}
class Child : Parent{
}
now, Child().values(), will return Child[]. I see this as particularly useful with type inference. you can do
childs := Child().values()
instead of
Child[] childs := Child().values()
kaushikFri 22 Jan 2010
On similar lines, could we allow a method to return "This?" to specify that it can return an instance of the current type or null..
brianFri 22 Jan 2010
Promoted to ticket #902 and assigned to brian
I'm not sure this is something I'll actually tackle. But I think it makes sense to officially track as a feature request. Support for the following return types:
This?
This[]
This?[]
tacticsFri 22 Jan 2010
What about other kind of This-based types, such as Uri:This or This:Str or |This->Foo|. If we add support for types parametrized over This, we might as well generalize it to every polymorphic type.
brianFri 22 Jan 2010
good point - that is exactly why this sort of explodes in complexity
jodastephenFri 22 Jan 2010
Just adding This?, This[] and This?[] would be a major step forward. I wouldn't have thought This? was too hard...
tacticsFri 22 Jan 2010
good point - that is exactly why this sort of explodes in complexity
I never gave any thought to the necessity of this feature. But I thought I'd throw it out there for completeness.
andyFri 22 Jan 2010
What would be the use case for this feature? I could see This?, but not sure I see when I would want to return a list of myself.
tacticsFri 22 Jan 2010
I think This? seems best. It's the same as it is now, but you can use null as a sentinel value.
kaushikFri 22 Jan 2010
I will give the use case for both of this. We have built a small ORM for our project on top of fan sql.. So you can query like this
tag := Tag{id=1}.one
Tag extends Entity which has the one() method. Simple and works great. There is also a list method that someone should call like this
tags := Tag{name="hello"}.list
Except now, I've to ask developers to use
Tag[] tags := Tag{name="hello"}.list
Also, one() has to throw exception now and not return null because This? is not allowed.
kaushik Sat 9 Jan 2010
I can return an instance of the type being used by returning "This" from a method. Is there a way to return a list of instances of type being used. returning This[] does not seem to work.
brian Sun 10 Jan 2010
That would be a nice feature, but I'd have to give that some thought regarding covariance and contravariance. I'm surprised I haven't run across that use case myself.
fury Fri 15 Jan 2010
Would this be the equivalent of keeping a static list of all the instances created?
kaushik Fri 15 Jan 2010
No, this would just mean that the method would always return a list of instances of the Type being used
eg.,
now, Child().values(), will return Child[]. I see this as particularly useful with type inference. you can do
instead of
kaushik Fri 22 Jan 2010
On similar lines, could we allow a method to return "This?" to specify that it can return an instance of the current type or null..
brian Fri 22 Jan 2010
Promoted to ticket #902 and assigned to brian
I'm not sure this is something I'll actually tackle. But I think it makes sense to officially track as a feature request. Support for the following return types:
This?
This[]
This?[]
tactics Fri 22 Jan 2010
What about other kind of
This
-based types, such asUri:This
orThis:Str
or|This->Foo|
. If we add support for types parametrized overThis
, we might as well generalize it to every polymorphic type.brian Fri 22 Jan 2010
good point - that is exactly why this sort of explodes in complexity
jodastephen Fri 22 Jan 2010
Just adding This?, This[] and This?[] would be a major step forward. I wouldn't have thought This? was too hard...
tactics Fri 22 Jan 2010
I never gave any thought to the necessity of this feature. But I thought I'd throw it out there for completeness.
andy Fri 22 Jan 2010
What would be the use case for this feature? I could see
This?
, but not sure I see when I would want to return a list of myself.tactics Fri 22 Jan 2010
I think
This?
seems best. It's the same as it is now, but you can usenull
as a sentinel value.kaushik Fri 22 Jan 2010
I will give the use case for both of this. We have built a small ORM for our project on top of fan sql.. So you can query like this
Tag extends Entity which has the one() method. Simple and works great. There is also a list method that someone should call like this
Except now, I've to ask developers to use
Also, one() has to throw exception now and not return null because This? is not allowed.