Vector3: Implement __concat operator overloading

Now you can do this:

local v = wea.Vector3.new(3, 4, 5)
print(v.."yay")
This commit is contained in:
Starbeamrainbowlabs 2021-07-15 02:18:21 +01:00
parent 0b379c48cb
commit 0fef39d707
Signed by: sbrl
GPG key ID: 1BE5172E637709C2
2 changed files with 34 additions and 0 deletions

View file

@ -0,0 +1,28 @@
local Vector3 = require("worldeditadditions.utils.vector3")
describe("Vector3.__concat", function()
it("should work when concatenating a Vector3 + Vector3", function()
local a = Vector3.new(3, 4, 5)
local b = Vector3.new(6, 7, 8)
assert.are.is_true(
type(tostring(a .. b)) == "string"
)
end)
it("should work when concatenating a string + Vector3", function()
local a = "yay"
local b = Vector3.new(6, 7, 8)
assert.are.is_true(
type(tostring(a .. b)) == "string"
)
end)
it("should work when concatenating a Vector3 + string", function()
local a = Vector3.new(3, 4, 5)
local b = "yay"
assert.are.is_true(
type(tostring(a .. b)) == "string"
)
end)
end)

View file

@ -389,5 +389,11 @@ function Vector3.__tostring(a)
return "("..a.x..", "..a.y..", "..a.z..")"
end
function Vector3.__concat(a, b)
if type(a) ~= "string" then a = tostring(a) end
if type(b) ~= "string" then b = tostring(b) end
return a .. b
end
return Vector3