nikosliapis Posted April 5, 2012 Share Posted April 5, 2012 Hello community I am working on a script which contains a function that looks like that: Func _example () If statement A Then code more code ElseIf statement B Then code more code ElseIf statement C Then code more code EndIf EndFunc ; _example () I'm thinking if it possible to modify the above example to look like that: Func _example () If statement A Then _think_A () ElseIf statement B Then _think_A () ElseIf statement C Then _think_A () EndIf Func _think_A () code more code EndFunc ; _think_A() EndFunc ; _example () I apologise for opening a new topic but i tried to search throw the forum and got confused from "recursion" and "Local Functions" Returning to my example, i don't intend to use the function _think_A() outside from the _example() function. The reason that i want to do that is simply to reduce the amount of code lines. Also in case of a change there is no need to make the same change multiple times. Thanks in advance. Coding can be fun when you do it your own. Link to comment Share on other sites More sharing options...
BrewManNH Posted April 5, 2012 Share Posted April 5, 2012 No, you can't do that. You can't have a function inside another function, they have to be separate from each other. You also can't have a function inside any type of loop, such as a While/Do/For loop. If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted April 5, 2012 Moderators Share Posted April 5, 2012 nikosliapis,You cannot define a function within another function as in your second example. You must define it outside like this: Func _example () If statement A Then _think_A () ElseIf statement B Then _think_A () ElseIf statement C Then _think_A () EndIf EndFunc ; _example () Func _think_A () code more code EndFunc ; _think_A()And I presume you are not calling the same function each time or why do you have the If structure? M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
nikosliapis Posted April 5, 2012 Author Share Posted April 5, 2012 (edited) Thank you all for such a quick responce.And I presume you are not calling the same function each time or why do you have the If structure? It is the same function that i want to call only the parameters will be different. (that was not shown on my example for reasons of simplicity)The example you provided is no good for me because in such a case there will be a major confusion with "Local" and "Global" variables.Anyway i got my answer, thank you again. Edited April 5, 2012 by nikosliapis Coding can be fun when you do it your own. Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted April 5, 2012 Moderators Share Posted April 5, 2012 nikosliapis,because in such a case there will be a major confusion with "Local" and "Global" variablesWhy? If you explain more we can try to help because there should not be a problem if you scope the variables correctly or pass them as parameters. m23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
nikosliapis Posted April 5, 2012 Author Share Posted April 5, 2012 (edited) nikosliapis,Why? If you explain more we can try to help because there should not be a problem if you scope the variables correctly or pass them as parameters. m23Perhaps "Confusion" was the wrong word.Really it's not worth it. The amount of variables and arrays i use in my actual script is huge. I understand how the variable types and passing them throw functions work, but i preffer just to copy and paste lines of code. (I know that this is not the proper way to construct a script but i will do that untill i get to a working version of my script. After that i will try rewrite it in the "correct" way ). Edited April 5, 2012 by nikosliapis Coding can be fun when you do it your own. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now