起因是这个帖子如果在窗口1上面点个按钮运行主窗口上面的子程序(应该是如何)
(提交晚了一步,手速慢了)顺便@439596 提醒一下,最好是窗口名.子程序名,防止有相同的子程序名。
提交完之后,在我的印象中,程序集就是不同的命名空间。
那既然这样,不同命名空间下可以拥有重复的子程序名,在属于窗口程序集下,可以通过窗口.子程序名进行引用,
那如果是非窗口的不同子程序集下有相同的子程序名呢?
之前没想过这些,因为我一个做java的直接用类了。用易语言也是写一些简单的窗口工具。所以直接去写了个简单的测试demo,
列了下边四个程序集,两个窗口程序集,两个普通程序集
启动窗口程序集下和两个普通程序集下各自都有一个子程序1(),我在窗口1程序集下进行调用。
执行结果说起来麻烦,感兴趣的自己去玩玩吧。

不会报冲突,所以确实程序集起到了命名空间的作用。
不同窗口下的代码区是不同的程序集。
看易语言的代码应该是把窗口程序集的程序挂载到了窗口上。
所以跨不同窗口就是窗口名.子程序名。
但是不能通过程序集名.子程序名去调用普通程序集的子程序。

老吴提供的方式是你可以直接调用,也就是说,到了最开始的问题,不同程序集下有相同的程序名,调用结果会怎么样。

在多个程序集下如果分别有相同的子程序名,如果没有指定命名空间(易语言也没法指定,所以还是用类,但是类有bug),就会按声明顺序(大概测试了一下是你写代码的前后顺序)执行最后一个声明的子程序。
以上是根据实测结果推论出来的。
如果有需要补充的或者有错误的地方,评论就是了。
|