问题标签 [access-specifier]

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 投票
3 回答
230 浏览

ruby - Ruby 导入的方法总是私有的吗?

最好用一个例子来解释:

文件 1.rb:

文件2.rb:

将给出错误“':调用私有方法'foo'”。

我可以通过这样做来解决这个问题,A.new.send("foo")但是有没有办法让导入的方法公开?

编辑:为了澄清,我并没有混淆包含和要求。此外,我不能使用正常包含的原因(正如许多人正确指出的那样)是这是元编程设置的一部分。我需要允许用户在运行时添加功能;例如,他可以说“run-this-app --include file1.rb”,应用程序的行为会根据他在 file1.rb 中编写的代码而有所不同。抱歉应该解释得更清楚。

编辑:在阅读了 Jorg 的回答后,我意识到我的代码的行为并不完全符合预期,他完美地回答了我的(被误导的)问题。我正在尝试做一些更类似于str=(entire file1.rb as string); A.class_exec(str).

0 投票
3 回答
44223 浏览

ruby - How to set private instance variable used within a method test?

Given a class with a couple of instance variables and some methods. Some instance variables are set accessible via attr_reader and attr_accessor. Thus the others are private.
Some of the private instance variables get set within one of the instance methods and read/utilized within another method.

For testing I'm using RSpec. As I'm still new to Ruby and want to get all things right, I defined my tests being rather fine-grained. Thus I've got one describe block for each instance method, which themselves are partitioned into a subset of contexts and its. General environmental preconditions are defined with before.

However, when testing one of the methods, which is utilizing but not setting one of the private variables, I need to call the other method, which is setting this variable. This seems rather overweight and not modular for me.

Is there a way of forcing a private instance variable to a certain value. Similar to "ripping out" the value of a private instance variable with Object::instance_eval(:var).

0 投票
2 回答
562 浏览

c++ - 我应该如何决定是否构建“受保护的接口”?

来自: http: //www.parashift.com/c++-faq-lite/basics-of-inheritance.html#faq-19.9

三键:ROI、ROI、ROI。

您构建的每个界面都有成本和收益。您构建的每个可重用组件都有成本和收益。每一个测试用例,每一个结构清晰的东西——a-ma-bob,每一项投资。如果该投资没有积极的回报,您永远不应该在任何事情上投入任何时间或任何金钱。如果您的公司花费的成本超过节省的成本,请不要这样做!

不是每个人都同意我的观点;他们有权犯错。例如,生活在离现实世界足够远的地方的人表现得好像每一项投资都是好的。毕竟,他们的理由是,如果你等待的时间足够长,有一天它可能会为某人节省一些时间。也许。我们希望。

整个推理过程是不专业和不负责任的。你没有无限的时间,所以要明智地投资。当然,如果你住在象牙塔里,你就不必担心那些被称为“时间表”或“客户”的讨厌的东西。但在现实世界中,您是按计划工作的,因此您必须只将时间投入到能够获得良好回报的地方。

回到最初的问题:什么时候应该花时间构建受保护的接口?答:当您从该投资中获得良好回报时。如果要花费你一个小时,请确保它为某人节省了一个多小时,并确保节省的钱不是“有一天会越过彩虹”。如果您可以在当前项目中节省一个小时,那就很容易了:去吧。如果有一天它会为其他项目节省一个小时,也许我们希望,那就不要这样做。如果介于两者之间,您的答案将取决于您的公司究竟如何权衡未来与现在。

要点很简单:不要做会破坏你的日程安排的事情。(或者如果你这样做了,请确保你永远不要和我一起工作;我会让你头疼的。)如果投资有回报,投资是好的。不要天真幼稚;长大后意识到有些投资是不好的,因为总的来说,它们的成本高于回报。

好吧,我不明白如何将它与受 C++ 保护的接口相关联。

请提供任何真实的 C++ 示例来说明此常见问题解答的内容。

0 投票
6 回答
82637 浏览

java - java中默认访问说明符和受保护访问说明符之间的区别

我正在尝试学习 java,当我通过访问说明符时,我有一个疑问。如果没有指定默认值和java中的受保护访问说明符有什么区别?

0 投票
7 回答
27156 浏览

ruby - “私有”、“公共”和“受保护的方法”之间有什么区别?

我正在学习 Ruby,并且已经到了让我感到困惑的地步。

我正在使用的书正在谈论private,publicprotected methods,但我仍然有点困惑。每个之间有什么区别?

0 投票
4 回答
2378 浏览

c++ - 朋友功能是否必须在同一个文件中?

我实际上正在测试一个文件并且我有一种情况,我需要从 main.cpp 访问该类的一些受保护成员。我尝试添加main()为朋友,但没有成功,并得知它不起作用,所以我将所有内容main()移至 atest ()test()成为朋友。它仍然显示错误。

例子是

//它在第 34 行显示错误:Base::value 受到保护。请指教。

0 投票
2 回答
180 浏览

c# - 如何在 MVC3 中访问私有属性

我正在使用 Mvc3 和 NHibernate 我有一个名为 Activation code 的类,如下所示:

我想在控制器中访问此字段

但无法得到它。为什么?

0 投票
3 回答
323 浏览

c++ - 为什么即使声明为“私有”,成员函数仍然可以访问?

可能重复:
C++ 中的公共虚函数派生私有

程序的输出是“D::show() called.”,表示调用了类 D 的私有部分中声明的虚函数。你不觉得很奇怪吗?如何从外部访问类的私有成员?

0 投票
3 回答
291 浏览

c++ - 什么时候应该限制派生类中虚函数的可访问性?

考虑以下代码:

关于这个问题,我听到了两种不同的思想流派:

1) 让可访问性与基类相同,因为用户无论如何都可以使用 static_cast 来获得访问权限。

2) 使函数尽可能私有。如果用户需要 a->Foo() 而不是 b->Foo(),那么 Derived::Foo 应该是私有的。如果需要,它总是可以公开的。

有理由选择其中一个吗?

0 投票
3 回答
2802 浏览

c# - C#: Why are accessibility modifiers for members optional (rather than required)?

I've read this very well written blog post by Eric Lippert, but it doesn't explain the specific case of accessibility modifiers.

Conventional stackoverflow wisdom says to always specify "private" explicitly, which would imply that members should have required the modifier.