I know is a stupid question, but it’s more about my curiousity, is there a way to make function but with split string, like function Hello World() because what I know now you have to combine the string as function Name, like function HelloWorld() or maybe even worse thinking like function Hello(A).World(B)(). This is all just to settle my curiosity
with dictionary notation you could, it’s similar to how ModuleScripts work:
local module = {}
function module.HelloWorld()
print("HelloWorld")
end
module["Hello World"] = function()
print("Hello World")
end
print(module)
return module
Now requiring this module will output:
> require(workspace.ModuleScript)
▼ {
["Hello World"] = "function",
["HelloWorld"] = "function"
}
Effectively “Hello World” becomes a string-type key inside of the module dictionary, so you can reference it as module["Hello World"]()
or the atlernative module.HelloWorld()
Yes, in module script we can make like function Module.Blablabla(A, B) right
But more about my curiousity is let’s say Module(A).Blablabla(B)
Apart from @MP3Face’s work around the general answer is no, because whitespaces and indentation are actually important in Lua, as well as many other similarly typed languages like Python.
So according to my curiousity, I reiterate once again this is stupid, I know, just out of curiosity. Is like function Module(A).Thing(B)()
print(A…” “…B)
end
So player just need to Module(“Hello”).Thing(“World”)
And later it will print(“Hello World”)
Because from how I know it how usually it be is like Module.Thing(“Hello”, “World”)
I know this is so stupid, but yeah what can I say, curiousity.
Or can I run functions on the same line?
So usually is gonna be like
A()
B()
Can it be
A() B()
Yeah i think this question is better than previous.
You can embed things like that in a dictionary. Back to my example:
local module = {}
module["A"] = {
["B"] = function()
print("A ... B")
end,
}
return module
Then you can call module["A"]["B"]()
to execute function B within A.
No language I speak can call functions like that, but you may be able to define your own object to parse that sequentially, calling it in reverse order of B()'s return → A()'s parameters. Here’s something close using the modulescript example yet again:
local module = {}
module.Hello = {
Thing = function(str)
print("Hello " .. str)
end,
}
return module
Then calling module.Hello.Thing("World")
would work.
You can’t have a space inside a variable name, so no.
local Hello World = 6
-- this is bad
When you create a function using function
, what you’re doing is creating the function and then assigning it to said variable.
local function Hi()
end
is the same as
local Hi = function()
end
In either case, Hi
is just a variable.
Functions don’t have “names”, just like numbers and strings don’t have “names.” The “name” of the function isn’t Hi
, that’s just the variable it’s assigned to.
When you say
local Hi = 5
you’re not saying the name of 5 is now “Hi,” that’s just the variable it’s assigned to.
Same for functions.