问题标签 [scope]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
1787 浏览

project-management - 如何告诉项目经理“不”进行范围蔓延

尽管项目经理可能每个人都有自己的个性和管理风格,但似乎他们中的许多人都对在可能的情况下(无论是否有人在看)潜入“范围蔓延”充满了有害的爱。虽然他们通常是善意的(祝福他们的心),但您发现对项目经理说“不”的最佳方式是什么?

0 投票
4 回答
866 浏览

c++ - 使用 STL 迭代器而不初始化它

我想做这样的事情:

但我无法创建迭代器并将其初始化为 NULL。有什么办法可以做到这一点吗?理想情况下,我会在交换机中创建并分配迭代器,但它会立即超出范围。

0 投票
3 回答
529 浏览

perl - Perl 猴子补丁是否允许您查看补丁包的范围?

我正在使用“如何在 Perl 中对实例方法进行猴子修补?”开头给出的技术对包进行修补。. 我遇到的问题是原始子例程使用了一个包级my变量,修补后的子例程似乎无法通过完整路径规范或隐式使用访问该变量。

有什么方法可以获取以这种方式限定范围的数据,以便在修补的子例程中使用?

0 投票
5 回答
3088 浏览

c++ - 编码实践:矩阵乘法中按值返回还是按引用返回?

我正在参考我昨天写的这个问题来写这个问题。在一些文档之后,我似乎很清楚,我想做的事情(以及我认为可能的事情)即使不是不可能也几乎是不可能的。有几种方法可以实现它,由于我不是经验丰富的程序员,所以我问你会采取哪种选择。我再次解释了我的问题,但现在我有一些解决方案要探索。

我需要的

我有一个 Matrix 类,我想实现矩阵之间的乘法,以便类的使用非常直观:

我昨天吃的

目前我重载了两个运算符operator*operator=直到昨天晚上,它们都是这样定义的:

operator* 在堆上实例化一个新的 Matrix 对象 ( Matrix return = new Matrix(...)),设置值,然后:

我今天拥有的

经过讨论,我决定以“不同的方式”实现它,以避免用户被任何类型的指针打扰并保持用法不变。“不同的方式”是按值传递 operator* 的返回值:

operator*return在堆栈上实例化,设置值,然后返回对象。

这种方法有一个问题:它不起作用。operator= 需要一个 Matrix& 并且 operator* 返回一个 Matrix。此外,由于另一个原因,这种方法对我来说看起来不太好:我正在处理可能非常大的矩阵,并且该库的目标是 1)对我的项目足够好 2)快速,所以可能通过按价值计算不应该是一种选择。

我探索了哪些解决方案

好吧,按照前面讨论中的建议,我阅读了一些关于智能指针的内容,它们看起来很棒,但我仍然无法弄清楚如何解决我的问题。它们处理内存释放和指针复制,但我基本上使用引用,所以它们看起来对我来说不是正确的选择。但我可能错了。

也许唯一的解决办法就是传值,也许我无法兼顾效率和良好的界面。但同样,你是专家,我想知道你的意见。

0 投票
8 回答
92826 浏览

c++ - 枚举类型的命名空间 - 最佳实践

通常,需要同时使用多个枚举类型。有时,一个人有一个名字冲突。想到了两个解决方案:使用命名空间,或使用“更大”的枚举元素名称。尽管如此,命名空间解决方案有两种可能的实现方式:一个具有嵌套枚举的虚拟类,或者一个完整的命名空间。

我正在寻找所有三种方法的优缺点。

例子:

0 投票
5 回答
2849 浏览

c++ - 关于函数范围的基本 C++ 问题

我刚开始学习 C++,所以你必须忍受我的无知。有没有办法声明函数,以便可以在使用它们的函数之前引用它们而无需编写它们。我正在使用一个 cpp 文件(不是我的决定)并且我的函数会调用它们自己,因此实际上并没有正确的顺序来放置它们。在使用它们之前有什么方法可以#define 函数或类似的东西?或者也许是一种使用范围运算符标记它们的方法,而不需要它们实际上是一个类的一部分?

提前致谢

0 投票
4 回答
80475 浏览

java - 更改方法中变量的值,Java

我有一个关于更改 Java 方法中的变量值的问题。

这是我的代码:

在方法执行之后Test.funk(bird, tiger),bird 的值没有改变——它仍然是值10,即使在funk()方法中我们已经改变了值a = b[0] + 5;

另一方面,数组中元素的值发生了变化,因为我们有语句b[0] = b[0] * 2;

我不明白为什么一件事会改变而另一件事不会?有人可以为我解释一下吗。

0 投票
27 回答
550136 浏览

javascript - JavaScript 中变量的作用域是什么?

javascript中变量的范围是什么?它们在函数内部和外部具有相同的范围吗?或者它甚至重要吗?另外,如果变量是全局定义的,它们存储在哪里?

0 投票
3 回答
427 浏览

php - PHP 类中的作用域

我正在创建一个数据库连接对象,但我不确定最好的方法是什么......

如果我创建一个建立连接的 dbConnection 类(使用 mysql_connect),我可以从主脚本中的任何位置调用 mysql_query 吗?

从其他类里面呢?我需要将对象或属性作为参数传递吗?

基本上,我正在寻找使用简单类一次连接到数据库的最佳方式(在速度+内存方面)......

我已经发布了数据库连接类的构造函数:

}

0 投票
2 回答
239 浏览

vb.net - 限制 Setter 范围然后应用接口后,范围被忽略!

如果我在 setter 上设置 Friend 级别的范围,像这样......

...然后从另一个项目中调用它,它可以正常工作。我不能做类似 MyClass.IsDirty = True 的事情。

伟大的!这正是我想要的。

但是现在如果我定义一个接口,我确实必须这样做:

我可以做类似的事情:

...而且,奇怪的是,它运行了!不抛出异常,内部变量设置为 True。它完全忽略了朋友范围!

这太可怕了。我错过了什么??

注意:我需要这个,因为我正在设计一个 API,并且我希望内部 API 能够设置 IsDirty,但最终开发人员不应该能够参与其中。目前我将整个类包装在一个外观中以获得此功能,但外观应该是不必要的。