Consider a script that needs to access the local player’s character’s head position. There are two ways to write this:
local position = game.Players.LocalPlayer and game.Players.LocalPlayer.Character and game.Players.LocalPlayer.Character:FindFirstChild('Head') and game.Players.LocalPlayer.Character.Head.Position --- or --- local localplayer = game.Players.LocalPlayer local character = localplayer and localplayer.Character local head = character and character:FindFirstChild('Head') local position = head and head.Position
?. that can conditionally access a value. With such an operator, the above code becomes easily readable:
local position = game.Players.LocalPlayer?.Character?:FindFirstChild('Head')?.Position
I want the operator to perform the index operation if the left-hand value is truthy. If it’s falsey, it should just return nil instead of performing an index.