首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在另一个函数中是否有定义助手函数的方法?

在另一个函数中是否有定义助手函数的方法?
EN

Stack Overflow用户
提问于 2021-05-03 11:03:45
回答 1查看 259关注 0票数 1

此代码将引发一个解析错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func foo():
 func bar():
   pass
 pass

Error pasing expression, misplaced: func

是否有特殊的关键字或其他技巧来定义内部函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-03 12:53:00

不是在戈多3.x。Godot4.0用给定的语法支持这一点。这是提议:“在GDScript中添加lambda函数”

增编:我应该指出,惯例是,任何带有下划线("_")的星星都应该被视为私有的。而从外部访问它们则是你自己的风险。这种方法已经在Python上运行了很长一段时间。

有些事情你可以做,…

“私人”领域

正如您所知道的,您可以使用setget让getter和setter在每次您访问外部字段时运行,或者使用self。好吧,你可以写那些失败的setter和setter。

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var _value setget noset, noget

func noset(_new_value):
    push_error("Invalid access.")

func noget():
    push_error("Invalid access.")

这将导致从另一个脚本中使用错误。如果使用self._value从相同的脚本中使用,但不使用来自同一个脚本的_value (不使用self),也会导致错误。因此,我们有一个“私人”领域。

类似地,仅通过指定setter,我们可以拥有一个只读属性:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var value setget noset

func noset(_new_value):
    push_error("Invalid access.")

“私”法

按照同样的想法,我们可以将令牌存储在私有字段中。然后用它作为访问检查。我们将使用一个新的对象,使它是不可能匹配的偶然。这类似于拥有一个监视器(如线程中所理解的)、持有锁和执行try_enter…。除了没有线程部分。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var _token setget noset, noget

func noset(_new_value):
    push_error("Invalid access.")

func noget():
    push_error("Invalid access.")

func _method(token):
    if token != _token: # try enter
        push_error("Invalid access") # did fail to enter
        return

    # did enter
    pass

func _init():
    _token = ClassDB.instance("Object") # hold lock

在相同的脚本中,您可以访问_token。因此,您可以像这样调用该方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
_method(_token)

但是,_token是“私有”的,传递其他任何内容都会导致错误。因此,不可能从另一个脚本中使用该方法。

这是https://github.com/godotengine/godot-proposals/issues/641#issuecomment-699579606的一个改进版本。关于https://github.com/godotengine/godot-proposals/issues/641的提案。

评估代码

您可以做的其他事情是从代码中创建一个脚本(比如"eval")。这是通过GDScript类完成的。

您可以像这样创建脚本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var script = GDScript.new()
script.source_code = "func run():print('hello world')" # create code at runtime
script.reload()

实例化如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var script_instance = script.new()

当然,您可以将实例保存在“私有”字段中。您也可能对https://docs.godotengine.org/en/stable/classes/class_funcref.html感兴趣。

然后使用您在其中声明的任何内容,在本例中使用run函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
script_instance.call("run")

callgetset

如果不在运行时创建代码,则可以使用load加载脚本。或者使用内部类

如果不需要完整的脚本,则可以使用Expression

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67374441

复制
相关文章
如何在一周内摸清一个行业?
在和咨询、投行、投资、猎头这些行业的人聊天的时候,我反复听到“一周”这个时间,于是我也开始好奇:你们是在什么情况下需要在一个星期之内了解一个行业?你们都是如何做到在一个星期之内摸清一个行业的?
用户1756920
2018/07/23
8430
如何在一周内完成上万固定资产的盘点?
随着企业的不断发展壮大,固定资产的数量和种类也在不断增多,对于企业来说,对固定资产的管理和盘点显得越来越重要。而传统的手工盘点方式,不仅效率低下,而且容易出现漏盘和重复盘点等问题。为了更加高效地管理和盘点企业的固定资产,现在许多企业正在采用固定资产管理系统,其中易点易动固定资产管理系统是一款功能齐全、通用共性高的固定资产管理和盘点系统。
易点易动固定资产管理系统
2023/04/04
2350
如何在一周内完成上万固定资产的盘点?
jQuery 追加元素的方法如append、prepend、before
jQuery after() 方法在被选元素之后插入内容。 jQuery before() 方法在被选元素之前插入内容。 实例
用户5640963
2019/07/28
1K0
学习Linux,如快速入门?
随着现在互联网时代的爆发,越来越多的企业开始需要Linux工程师,相对应的Linux工程师的薪资待遇也越来高,那么Linux到底是什么?如何快速入门呢?今天我就为大家讲一讲如何快速入门学习Linux。
小小科
2020/04/16
1.4K0
JQuery学习—JQuery的Validform学习
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/121265.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/19
5110
JQuery学习—JQuery的Validform学习
如何在 Python 内使用深度学习实现 iPhone X 的 FaceID
在最近推出的 iPhone X 中,它被讨论最多的特点之一是它采用了新的解锁方法,即 TouchID:FaceID。
AI研习社
2018/09/25
8130
如何在 Python 内使用深度学习实现 iPhone X 的 FaceID
jQuery学习笔记——jQuery基础
什么是jQuery?jQuery是一个快速、简洁的JavaScript库,其设计宗旨是“write less,do more”,倡导用更少的代码,做更多的事情。通过这段时间的学习,我感觉jQuery是一个“语法糖”,就像是包在糖果外面的包装,让js看起来更好看。
颜颜yan_
2022/12/01
14.1K0
jQuery学习笔记——jQuery基础
jquery学习
<1> jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team。
菲宇
2019/06/13
2.3K0
JQuery学习—JQuery-Validation 使用
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/121266.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/19
4.6K0
jQuery Cheat—Sheet(jQuery学习笔记)
jQuery Cheat—Sheet(jQuery学习笔记) Web前端学习笔记之——jQuery学习笔记 ---- 什么是jQuery? jQuery是一种JavaScript库,实现了常见任务的自动化和复杂任务简单化。 jQuery库为Web脚本编程提供了通用的抽象层,使之适合任何脚本编程情景。 jQuery能满足以下需求: 取得文档中的元素、修改页面外观、改变文档内容、响应用户的交互操作、为页面添加动态效果、不刷新加载、简化常见的JavaScript任务。 ---- jQuery版本?
李郑
2018/03/01
16.2K0
jQuery Cheat—Sheet(jQuery学习笔记)
统计一周内每天销售总额SQL语句
通过前端給过来的图,我们只需要统计一周内的订单总量和 订单总金额,一开始我的想法是写多个sql语句,然后再插入到一个数组中去,最后的结果你知道的,效率很低很低。
宁在春
2022/10/31
9450
统计一周内每天销售总额SQL语句
JQuery基础学习
JQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨 是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
乐心湖
2021/01/18
3.7K0
如何在GridView的Footer内显示总计?
前台: <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound" ShowFooter="true"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:Label ID="labelfirst" runat="server" Text='<%# Eval("first") %>'>
菩提树下的杨过
2018/01/22
9300
jQuery学习笔记
jQuery大部分功能需要根据文档的DOM模型来工作,首先需要正确地解析到整个文档的DOM模型结构。使用jQuery需要在整个文档被浏览器完全加载后才开始进行。
wangxl
2018/07/27
3.5K0
JQuery的学习
JQuery基础: 1. 概念: * 一个JavaScript框架,简化JS开发。 * jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。 * JavaScript
Rochester
2020/09/01
16.6K0
jQuery学习笔记
jQuery大部分功能需要根据文档的DOM模型来工作,首先需要正确地解析到整个文档的DOM模型结构。使用jQuery需要在整个文档被浏览器完全加载后才开始进行。
用户9076598
2022/03/02
6280
jQuery 学习(一)
<div id="a" style="background:#ccc" onclick="$(this).hide();" >点击我隐藏</div> //$(this).hide this 当前html元素,就是说当前元素点击隐藏。 `$("#a").show();` //id="" 选择器是"#"号 `$(".a").show();` //class="" 选择器是"."号 alert($(".input").html()); `alert($(".input").val());` //
简单、
2018/07/18
3330
jQuery学习笔记
jQuery函数位于一个document ready函数中,我们需要在js中加载该函数文档
Mirror王宇阳
2020/11/13
7.4K0
jQuery学习笔记
jQuery学习笔记
jQuery对象的text()和html()方法分别获取节点的文本和原始HTML文本
用户2700375
2022/06/09
1.3K0
jQuery学习笔记
JQuery 学习—JQuery Validation表单验证范例[通俗易懂]
jQuery Validato表单验证插件,它是基于jQuery类库,实现了js脚本于页面html代码的分离。你可以划分多个校验组,每个组的校验都是互不影响。对一个表单对象,你只需要写一行代码就可以轻松实现无数种(理论上)脚本控制。
全栈程序员站长
2022/07/19
1.8K0

相似问题

如何在一周内学习Sharepoint?

11

Jquery插件-选择一周内的时间

22

一周内合计

23

Jquery -关闭后一周内不要显示div (弹出)

11

如何在jquery中学习?

25
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文