Wishlist
-
@Eearslya Well, you can kinda do it right now using an array.
count = myargs( 0, 0, [ 1, 2, 3, 4, 5, 6 ] ) function myargs( item1, item2, itemarr ) return len(itemarr)
-
@Eearslya I see thank you for the clarification
-
@Kat That, is amazing - I'm heading home on the train and cant wait to get on the switch and try this out! Sorry, I should have searched before assuming it wasn't built in haha
-
@Tratax No worries!
-
@Tratax whilst you can't discern much form the very short clip size limit on the Switch's upload feature, I did a little video using a CRT shader on some maths patterns, you might get an idea for parameter values from it - you can make some truly bizarre effects with it!
https://fuzearena.com/forum/topic/10/playing-with-crt-shader/2
-
I'll give this a try.
We need an
elseif
orelif
if (a) then // do a elseif (b) then // do b else // do else endif
I'd also like to see a
switch case
someday. Might look like this.switch (expression) case value-1 // do this break case value-2 // do this break default // do this endswitch
-
@_JKDOS As you already know, the latter of those two is on the list of things to come. The first is unlikely. But, request noted.
-
@Martin Thats awesome. I would think getting the
switch
condition would be more unlikely, so I count myself lucky -
Functions to help us determine what type a variable is, like
isInt
,isFloat
,isString
,isVector
, andisArray
. Dunno ifisStruct
would be workable. -
@Discostew For structs, maybe even a generic
isA
that we can pass a struct type to. -
Intellisense?
Parameter context / reference for commands?
Summary-comments that appear when a type or method associated with it is selected or hovered over? -
getDrawTarget()
. Useful for functions that draw to images. It would allow them to save a reference to the current draw target and restore it before they return, so the rest of the program doesn't end up confused. -
Can you add a strSplit(<string>,<string separator>) function that returns an array of strings ?
result=strSplit("this+is+my+text","+")after execution, result = ["this","is","my","text"]
-
Can you add function indirect call ?
// classic function function draw() return void // put the address of the classic fonction draw in the field indirectdraw of the structure myForm=[ .prop1=0, .prop2=1, .indirectdraw=@draw ] // call the draw function using the tructure field myForm.indirectdraw() ==> call function draw
An even better use could be to pass as the first argument of the called method the structure itself:
// classic function function draw(self) // access the field of the structure self using self.field return void // put the address of the classic fonction draw in the field indirectdraw of the structure myForm=[ .prop1=0, .prop2=1, .indirectdraw=@draw ] // call the draw function using the tructure field myForm.indirectdraw() ==> call function draw(myForm) because the indirectdraw field is inside myForm
And now, you can start to play with OOP... :-)
What do you think about that ?
[edit by Martin] Added code tags
-
I think someone already mentioned insert and remove at index for arrays, but some more things that would be nice to have for arrays are
push()
pop()
shift()
andunshift()
For anyone curious
push()
- Adds a new element to end of an array
pop()
- Removes last element from an array
unshift()
- Adds new element to beginning of an array
shift()
- Removes first element from an array -
@pico8-jihem said in Wishlist:
Can you add a strSplit(<string>,<string separator>) function that returns an array of strings ?
result=strSplit("this+is+my+text","+")after execution, result = ["this","is","my","text"]
Here's my version of that. Takes a string and a separator string (length of 1)
function strSplit( strd, sep ) arr = [] if( len( sep ) == 1 ) then while(( loc = strFind( strd, sep )) >= 0 ) loop if( loc == 0 ) then strd = strd[ 1: ] else arr[ len( arr )] = strd[ :loc - 1 ] strd = strd[ loc: ] endIf repeat endIf return arr
-
@Discostew Excellent, mine is very similar. Thank you for sharing :-)
Some of the requested functions can be done programmatically. The purpose of my request is to have a native function (faster than anything we can write). -
@Martin Regarding switch vs if-[elsif...]-else-endif the main difference in many languages is that switch supports ordinal values only (due to optimized jmp table) but if-elsif supports arbitrary expressions (resulting in boolean). So in case F4NS switch supports arbitrary expressions it's a clear vote from me but if not there still might be handy to have elsif keyword.
-
@pico8-jihem Haha, this is just a step away from adding classes ;-). Maybe something like golang implements for their "sort-of-OOP" might be here in F4NS as well. Golang basically ignores all the principles from OOP but left structures (F4NS has structures as well), added namespace definition and allows hook functions to structures. Nothing more. No constructors, no inheritance and no polymorpism - memory gc is solved via escape analysis. So possibly something like this might appear in the future version of F4NS?
-
It would be nice if the standard
result = input(prompt, multiline)
function could include an optional 3rd parameter, with the default text in the edit field. That way it would be easier to edit existing data.