社区
脚本语言
帖子详情
知道全局函数的名称,如何动态调用?
youngyey
2008-10-07 02:36:38
在项目pbl存在一个gf_function_1的全局函数,
假如我有一个字符串,
string s_fun_name
s_fun_name='gf_function_1'
此时我该如何动态的调用这个函数那?
...全文
192
21
打赏
收藏
知道全局函数的名称,如何动态调用?
在项目pbl存在一个gf_function_1的全局函数, 假如我有一个字符串, string s_fun_name s_fun_name='gf_function_1' 此时我该如何动态的调用这个函数那?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
AFIC
2008-10-10
打赏
举报
回复
[Quote=引用 13 楼 youngyey 的回复:]
ds.describe 目前我只用过动态计算表达式,动态执行函数或者动态执行string语句,还没尝试,楼上请说的稍微详细点
[/Quote]
就是动态create一个计算域,它的表达式是你要调用的全局函数,包括参数
然后你取那个计算域的值不就行了。
Methodor
2008-10-10
打赏
举报
回复
9楼的是一种变通的方法,
一般pb不支持这种处理(其它很多语言支持类似宏替换功能),所以在pb中只能通过上面说的dw/ds的describe转换来实现,类似于宏替换,意义不大
sjq521521
2008-10-10
打赏
举报
回复
俺是来学习的。
youngyey
2008-10-10
打赏
举报
回复
昨晚已经尝试成功!AFIC和jdsnhan 说的都比较详细了,我就不帖我的示例了
感谢楼上各位!
散分了
youngyey
2008-10-09
打赏
举报
回复
多谢楼上几位,待我尝试成功后,来与大家分享!
kenshu
2008-10-08
打赏
举报
回复
[Quote=引用 7 楼 kenshu 的回复:]
换个方式吧
window w_to_open
string ls_parm = 'your_parm'
string ls_window_name = 'w_2'//w_1 or w_3
OpenWithParm(w_to_open, ls_parm, ls_window_name)
具体的逻辑在你这好多个窗口的OPEN事件处理,处理完后关掉自己.
---------------------------------------------------
我从前年轻的时候,试过另一个方法,不过太麻烦了,不是一两句讲得完.
[/Quote]
顺便很不负责任地说一句,那个方法,您可以通过一本书,叫<游戏脚本高级编程>,看完它,动动手,就可以了.
jdsnhan
2008-10-08
打赏
举报
回复
[Quote=引用 13 楼 youngyey 的回复:]
ds.describe 目前我只用过动态计算表达式,动态执行函数或者动态执行string语句,还没尝试,楼上请说的稍微详细点
[/Quote]
describe能解析变量,而ds dw又支持全局函数,尝试一下就知道了。
youngyey
2008-10-08
打赏
举报
回复
NND,发现JAVA可以
youngyey
2008-10-08
打赏
举报
回复
简单翻看了一下《游戏脚本高级编程》,核心是runscript()
现在每个全局函数的代码我可以动态取出来,可以存到一个string中,
关键是PB能否支持动态的运行这个string?
多谢各位,顶都有分
rightyeah
2008-10-08
打赏
举报
回复
全局的函数很不好弄,基本上想不出什么办法来动态调用的。
简单的办法是创建自定义用户对象,不可见的那种,然后在里面定义函数(事件也可以),然后可以这样调用:
powerobject o //使用基本类型,可以存放所有类型的对象
o=create using 'u_my_object' //动态创建用户对象,爱用什么类型就用什么类型
o.dynamic uf_my_func() //动态联编的用法,编译时系统不检查函数的存在,用户必须保证运行时有这个函数,否则出错
o.dynamic event ue_my_event() //与上面相同,不过是变成调用事件了
o.triggerevent('ue_my_event2') //另一种调用事件的方式,这种方式的好处是不要求事件存在,不过会返回一个特殊值来说明调用失败
kenshu
2008-10-08
打赏
举报
回复
[Quote=引用 10 楼 youngyey 的回复:]
简单翻看了一下《游戏脚本高级编程》,核心是runscript()
现在每个全局函数的代码我可以动态取出来,可以存到一个string中,
关键是PB能否支持动态的运行这个string?
多谢各位,顶都有分
[/Quote]
我说的,"比较麻烦",是指自己写一个类PB的解释器(也就是发明自己的语言,别人叫PHP/ASP/JAVA SCRIPT,你就叫youngyey script).
说"很不负责任",就是这个原因.
youngyey
2008-10-08
打赏
举报
回复
了解了下pbni,感觉应该可行,可惜c++功底不行,可以尝试下
主要想让自己的系统更简洁,程序的运行不是那么死,能够在后台配置程序的运行,不然不会费这力气
AFIC ,如果有pbni更多的说明或示例,给我点,多谢
youngyey
2008-10-08
打赏
举报
回复
ds.describe 目前我只用过动态计算表达式,动态执行函数或者动态执行string语句,还没尝试,楼上请说的稍微详细点
AFIC
2008-10-08
打赏
举报
回复
pbni可以,个人认为用ds.describe是最方便的,也足够了。
kenshu
2008-10-07
打赏
举报
回复
换个方式吧
window w_to_open
string ls_parm = 'your_parm'
string ls_window_name = 'w_2'//w_1 or w_3
OpenWithParm(w_to_open, ls_parm, ls_window_name)
具体的逻辑在你这好多个窗口的OPEN事件处理,处理完后关掉自己.
---------------------------------------------------
我从前年轻的时候,试过另一个方法,不过太麻烦了,不是一两句讲得完.
jdsnhan
2008-10-07
打赏
举报
回复
不能。这个问题n长时间以前就讨论过,也讨论了n长时间。
可以考虑通过dynamic event 转换或着采用楼上的办法,ds.describe来实现。
pcwe2002
2008-10-07
打赏
举报
回复
没有办法根据名称调用,如果需要用动态的考虑用数据窗口的describe("evalute....")
lllyyymmm
2008-10-07
打赏
举报
回复
choose case
case
....
end choose
wfliu
2008-10-07
打赏
举报
回复
动态调用函数 ? 不明白你的意思,
是否可以写一个多态函数实现你的要求 ?
youngyey
2008-10-07
打赏
举报
回复
我不确定用哪一个全局函数,我希望能根据字符串s_fun_name的值,运行那个函数
不要用choose case,把所有的函数都列一遍
加载更多回复(1)
通过
函数
名称
字符串发起
调用
/
函数
名反射
这篇博客探讨了在Python中如何通过
函数
名称
字符串
调用
函数
,包括使用`globals()`、`eval()`和`compile()`。同时,文章对比了C/C++中类似的概念,讲解了如何在C/C++中通过
函数
名字符串找到
函数
地址,涉及到`dlopen`、`dlsym`以及
动态
符号表。还讨论了C++类方法的
动态
调用
,并提到了
名称
修饰和访问控制在
动态
链接中的作用。
使用模块
名称
(字符串)
调用
模块的
函数
文章讨论了在Python中如何使用字符串来
动态
调用
函数
。主要方法包括使用getattr
函数
结合模块或对象来
调用
,以及使用__import__
函数
来
动态
导入模块。还提到了locals()和globals()
函数
在当前模块中的应用,以及在类和实例方法中的
动态
调用
。此外,文章提到了安全性和最佳实践,包括使用importlib.import_module替代__import__,以及处理可能的NoneType错误。
7.10
函数
的嵌套
名称
空间 作用域
本文围绕Python编程展开,介绍了
函数
的嵌套定义与
调用
,嵌套定义可让内部
函数
使用外部
函数
局部变量,嵌套
调用
能简化复杂问题。还阐述了
名称
空间,包括内置、
全局
和局部三类,以及其查找顺序。此外,讲解了作用域,如内置、
全局
、嵌套和局部作用域,以及修改作用域变量的方法。
python变量
名称
引用变量_Python
动态
变量名定义与
调用
方法
本文介绍了在Python中如何
动态
地定义和
调用
变量,包括使用`exec`
函数
、命名空间`locals()`和`globals()`,以及在类中使用
动态
变量。示例展示了如何在不同场景下创建和访问
动态
变量,适用于需要批量处理类似变量的场景。
动态
库同名
函数
问题
本文深入探讨了在Linux环境下,
动态
库与主程序中
函数
同名时的冲突问题,解析了符号查找、重定位和
全局
符号介入机制,提出了GCC visibility属性作为解决方案。
脚本语言
743
社区成员
8,037
社区内容
发帖
与我相关
我的任务
脚本语言
PowerBuilder 脚本语言
复制链接
扫一扫
分享
社区描述
PowerBuilder 脚本语言
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章