From 3955bcb2e39111bfbf51d9210c6bbf3857b7846a Mon Sep 17 00:00:00 2001 From: boyned//Kampfkarren Date: Mon, 8 Nov 2021 23:00:07 -0800 Subject: [PATCH] Add more notes about short circuiting, include equivalent if-else expressions --- rfcs/syntax-safe-navigation-operator.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/rfcs/syntax-safe-navigation-operator.md b/rfcs/syntax-safe-navigation-operator.md index f89fcadf..dff9c9fe 100644 --- a/rfcs/syntax-safe-navigation-operator.md +++ b/rfcs/syntax-safe-navigation-operator.md @@ -77,9 +77,16 @@ Failing the nil-safety check early would make the entire expression nil, for ins The list of valid operators to follow the safe navigation operator would be: ```lua -dog?.name -dog?.getName() -dog?:getName() +dog?.name == if dog == nil then nil else dog.name +dog?.getName() == if dog == nil then nil else dog.getName() +dog?:getName(args) == if dog == nil then nil else dog:getName(args) +``` + +When using safe navigation to call a function, the short circuiting will prevent the arguments from being evaluated in the case of nil. + +```lua +-- Will NOT call getValue() if `object` is nil +object?.doSomething(getValue()) ``` The operator must be used in the context of either a call or an index, and so: