c# - 使用内联 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 函数一起使用。
解决方案
要在字符串连接中使用内联委托,您需要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"
);
玉。您还需要考虑变量闭包之类的事情。综上所述,三元运算符在这里是一个更清洁的解决方案。
推荐阅读
- virtual-machine - 尝试连接到 pfsence Web 界面
- c++ - 如何创建一个 C++ 宏来定义使用调用另一个函数的参数列表的函数?
- django - 有什么办法可以将 Django 用于现有数据库?如果是,如何使用模型?
- ios - iOS暗模式:图像在签名切换背景内容中调整大小为白色
- swift - 如何将元素下推到堆栈,Xcode
- r - 从 list.files() 函数填充两个向量;
- python - cv2.fillConvexPoly 不完全绘制多边形
- c - 使用 poll 区分连接和消息
- sqlite - How to join different tables whilst including an except statement in the query?
- reactjs - 用 className 反应 Hook UseEffect