首页 > 解决方案 > 使用内联 Lambda 函数作为参数

问题描述

我可以根据为给定组件选择的选项在 Unity 编辑器中显示一些内容,这将在显示在此当前组件上选择的选项摘要时使用。

我如何使一个返回字符串的函数内联,我希望这个函数是内联的,因为会有很多这样的函数,它们只会在它们被使用的行中有用。

我提供了一个代码片段,可以阐明我想要做什么。

我在 c++ 和 JavaScript 中使用过这样的 lambda 函数,但在 c# 中没有,我尝试过在 C# 中找到如何使用它们的答案。

var script = target as ButtonManager;//get reference to this Component 

EditorGUILayout.LabelField("Your current Interactive configuration", 
            "Parent: " + script.sceneParent.name + "\n",
            "Popup? " + ()=>{ if (script.isPopup) { return "Popup" } else { return "Change Scene"} }
            + "\n"
            );

编辑: 我可以使用三元运算符来解决这个问题,但我很好奇这将如何与 lambda 函数一起使用

标签: c#unity3d

解决方案


要在字符串连接中使用内联委托,您需要Func<string>从匿名方法创建一个新的并执行它:

EditorGUILayout.LabelField("Your current Interactive configuration", 
            "Parent: " + script.sceneParent.name + "\n",
            "Popup? " + new Func<String>(()=>{ if (script.isPopup) { return "Popup"; } else { return "Change Scene";} })()
            + "\n"
            );

玉。您还需要考虑变量闭包之类的事情。综上所述,三元运算符在这里是一个更清洁的解决方案。


推荐阅读