Hi,
I'm converting some classes that I made in C# to X# as an exercise to better understand the syntax.
I'm stuck with the definition of an indexer. I looked in the documentation and I was not able to find anything.
In C# I would write:
public <TypeToReturn> this[<TypeToUse> <Value>]
{
get { <some code>; }
set { <some code>; }
}
What is the syntax to be used in X# ?
Regards Giuseppe
Indexer Syntax
Indexer Syntax
Hi Giuseppe,
it can be something like :
PROPERTY SELF[ index AS TypeToUse ] AS TypeToReturn
GET
LOCAL item AS TypeToReturn
item := DoWhateverYouWant()
RETURN item
END GET
END PROPERTY
HTH
Fab
it can be something like :
PROPERTY SELF[ index AS TypeToUse ] AS TypeToReturn
GET
LOCAL item AS TypeToReturn
item := DoWhateverYouWant()
RETURN item
END GET
END PROPERTY
HTH
Fab
XSharp Development Team
fabrice(at)xsharp.eu
fabrice(at)xsharp.eu
- orangesocks
- Posts: 40
- Joined: Thu Nov 12, 2015 2:41 pm
Indexer Syntax
Hi Fab
It worked like a charm. Thanks a lot.
It worked like a charm. Thanks a lot.
Indexer Syntax
Guys,
One additional thing worth mentioning, is that X# supports also regular indexed (named) properties, in addition to indexers:
I think those are not supported in c# at all, but we had to implement them in X# (and earlier in Vulcan) because VO does support them as well (and they are often very useful).
Chris
One additional thing worth mentioning, is that X# supports also regular indexed (named) properties, in addition to indexers:
Code: Select all
FUNCTION Start() AS VOID
LOCAL IMPLIED o := TestClass{}
? o:IndexedProperty[123]
RETURN
CLASS TestClass
PROPERTY IndexedProperty[n AS INT]
GET
RETURN n * 2
END GET
END PROPERTY
END CLASS
Chris
Chris Pyrgas
XSharp Development Team
chris(at)xsharp.eu
XSharp Development Team
chris(at)xsharp.eu
Indexer Syntax
Chris,
out of curiosity, what's the difference to using a method - apart from braces vs. brackets ;-?
out of curiosity, what's the difference to using a method - apart from braces vs. brackets ;-?
Regards
Karl
(on Win8.1/64, Xide32 2.20, X#2.20.0.3)
Karl
(on Win8.1/64, Xide32 2.20, X#2.20.0.3)
Indexer Syntax
Hi Karl,
Under the hood not much, both actually are implemented like methods internally. What changes is the syntax used to access/assign the indexer from user code:
Granted, you could recode things so that it uses a method (actually 2 methods, one for reading and one for writing), but in many cases the PROPERTY syntax is more intuitive. It's the same thing as with regular properties, what's the difference of having oWindow:Caption instead of oWindow:GetCaption() and oWindow:SetCaption(cNewCaption) ?
Chris
Under the hood not much, both actually are implemented like methods internally. What changes is the syntax used to access/assign the indexer from user code:
Code: Select all
LOCAL IMPLIED o := TestClass{}
? o:IndexedProperty[123]
o:IndexedProperty[123] := 10 // if we add a SEtter to our property as well
Chris
Chris Pyrgas
XSharp Development Team
chris(at)xsharp.eu
XSharp Development Team
chris(at)xsharp.eu