Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

What does "select" do, extra words so I can post this thread?

Asked by
sheepposu 561 Moderation Voter
4 years ago

I was trying to make a variable and then I noticed that "select" is a thing. What does it do and can I also have an example? Thx in advance!

0
Select(index,...): If index is a number, returns all arguments after argument number index. theking48989987 2147 — 4y

3 answers

Log in to vote
1
Answered by 4 years ago

select(n, ...) in lua returns the nth argument and everything else after it.

Here is a few examples

print(select(3, 0, 1, 2, 3, 4))
--> 2 3 4
print(select(1, 'a', 'b', 4))
--> a b 4

If you want to get how many arguments were given excluding the selector pass "#".

print(select("#", 1, 2, 3, 4, 5))
--> 5
0
do not be a hypocrite. you also copied the documentation, but just changed the order of words and included the fact that # is a valid argument dualworlds 90 — 4y
0
Where do i copy it, and i would never exclude an important feature of select, that if string "#" is passed it gives you how many arguments are given programmerHere 371 — 4y
Ad
Log in to vote
1
Answered by
starmaq 1290 Moderation Voter
4 years ago
Edited 4 years ago

select is very useful, for example let's say you have a function that returns multiple values, something like this

local function something(a, b, c)

return a, b, c

end

select makes you choose what to return. Its first paramater is a can be a number, and if so, it will return all values after the value with the corresponding number and also including it

So if we try this out

print(select(2, something("hi", "cool", "yo"))
--prints "cool" "yoo"

This can be useful for things like :FindPartOnRay() which returns a lot of values (the first value is the part that was hit with the ray, the second is the exact position of where the ray hit), what if you just needed the second value. Select would be useful.

select also can have a string that has to be written like this "#", if so it will return how many returned values there

print(select("#", something(7, "hj", true))) 
--prints 3

So, more detail that I'm gonna mention. something returns 3 values next to each other, they're not a table, you can think of them as just of a group of values seperated with a comma , (This is actually a datatype, its called a tauple, you can think of it looking like this (value, value, value))

So really, something is returning 3 values like this 7, hj, true 3 values next to each other

--so doing this
select(2, something(7, "hj", true))

--is the same as doing this
select(2, 7, "hj", true)

I hope you got the idea.

Log in to vote
0
Answered by 4 years ago
Edited 4 years ago

Namaste it is i, dual

You can find select() in: https://developer.roblox.com/en-us/api-reference/lua-docs/Lua-Globals

Quoting the wiki, select "Returns all arguments after argument number index."

It is generally used to access a group of values, returned as Tuple, however there is a special case where it returns the number of elements in the Tuple when passed the # argument.

Perhaps some code examples would work better:

local function a()
    return 1, 2, 3, 4, 5
end

print(select("#", a()))

-> 5

local function a()
    return 1, 2, 3, 4, 5
end

print(select(1, a()))

-> 1, 2, 3, 4, 5

local function a()
    return 1, 2, 3, 4, 5
end

print(select(2, a()))

-> 2, 3, 4, 5

local function a()
    return "dlp", "sin", "viking"
end

print(select(3, a()))

-> "viking"

local function a()
    return "dlp", "sin", "viking"
end

print(select(4, a()))

-> `` (nil)

On a sidenote, some interesting behaviour: (look at what is returned)

local function a()
    return "dlp", "sin", "viking"
end

print(select(4, a()))

-> ``


local function a() return "dlp", "sin", "viking" end print((select(4, a())))

-> nil

That is all

Answer this question