diff --git a/Losetta.Runtime/Core/Extension/Alice.Core.Dictionary.cs b/Losetta.Runtime/Core/Extension/Alice.Core.Dictionary.cs index 14d2606..da3723c 100644 --- a/Losetta.Runtime/Core/Extension/Alice.Core.Dictionary.cs +++ b/Losetta.Runtime/Core/Extension/Alice.Core.Dictionary.cs @@ -65,6 +65,24 @@ public static bool Remove(this Dictionary dict, Variable key { return dict.Remove(key); } + public static bool Remove(this Dictionary dict, Variable key, [Ref] Variable value) + { +#if NETCOREAPP2_0_OR_GREATER + bool cond = dict.Remove(key, out var result); +#else + dict.TryGetValue(key, out var result); + bool cond = dict.Remove(); +#endif + if (cond) + { + value.Assign(result); + } + else + { + value.AssignNull(); + } + return dict.Remove(key); + } public static void TrimExcess(this Dictionary dict) { dict.TrimExcess();