问题标签 [private-methods]

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 投票
2 回答
6920 浏览

oop - 有没有办法为 S4 参考类声明公共和私有方法?

预先:我知道 R 是一种函数式语言所以请不要咬 ;-)

在我的许多程序中使用 OOP 方法时,我有很好的经验。现在,我想知道在 R 中使用S4 引用类时是否有办法区分公共方法和私有方法?

例子

类定义

笔记

我通常不会将实际的方法定义放在类 def 中,而是将其与 S4 方法(即thisIsPublic_ref)分开,原因如下:

  1. 这样,类 def 保持清晰的排列,并且在单个方法 def 变得非常大的情况下更易于阅读。
  2. 它允许您随时切换到方法的功能执行。作为x某个类的实例,您可以调用foo_ref(.self=x)而不是x$foo().
  3. compiler::cmpfun()如果您有“普通”参考类方法,它允许您对我认为不可能的方法进行字节编译。

对于这个具体的例子来说,把它弄得那么复杂肯定没有什么意义,但我想我还是会说明这种方法。

方法定义

实例

公共与私人

应该允许class A(ie )的实例使用 class的公共方法:x.aB

不应允许class A(ie x.a)的实例使用 class的私有方法。所以我希望这不起作用,即导致错误:B

知道如何指定这一点吗?

到目前为止我唯一想到的:

为每个方法添加一个sender参数,为每个方法调用显式指定它并检查 if class(.self) == class(sender)。但这似乎有点“明确”。

0 投票
1 回答
1670 浏览

android - 是否可以在我自己的应用程序中使用私有三星框架?

在过去的两天里,我一直在探索在我自己的应用程序中使用私有三星框架的可能性,尤其是 /system/frameworks/seccamera.jar。还没有任何效果,所以我想知道这是否可能。

一些背景

我正在开发一个涉及扫描二维码的应用程序,因此非常依赖于相机的图像质量。因此,我正在努力从应用程序级别尽可能多地控制相机。大大提高扫描速度和可靠性的功能之一是相机进行点曝光测光的能力。但是,没有用于指定曝光测光模式的公共 API。

但是,使用 Galaxy Tab 2 上的内置相机应用程序,您可以指定几种曝光测光模式,其中包括点测光模式。所以我决定进一步调查。

我已经尝试过的

  1. 我使用 Eclipse 从 /system/frameworks 中提取了内置相机应用程序的 apk 和 odex 文件
  2. 我通过 baksmali 运行了 odex 文件,最后得到了一些 .smali 文件
  3. 我在它们中搜索“exposureMetering”并找到了一个类 com.sec.android.seccamera.SecCamera,它支持通过其参数内部类指定曝光测光模式
  4. 我确定该类位于 seccamera.jar (seccamera.odex) 中,因此我单独对其进行了 deodex:

    /li>
  5. 然后我再次将它组合在一起:

    /li>
  6. 最后我通过 dex2jar 运行 dex-file 来创建一个 jar 库:

    /li>

我将其作为外部 jar 链接到我的 Eclipse 项目。我发现 SecCamera 类具有与公共 android.hardware.Camera 几乎相同的 API,因此它使我的代码转换变得更加容易。

该项目构建没有错误,但是它在启动时几乎立即崩溃,并出现以下错误:

com.google.zxing.client.android.camera.PreviewCallback是我的项目类之一,是我从ZXing项目中借来的,所以很明显。我不得不改变它,所以它实现SecCamera.PreviewCallback而不是Camera.PreviewCallback. 也许这就是这里的罪魁祸首。

在该错误之前,还有一些其他警告:

那么,我在这里做错了什么?是否可以在我的自定义应用程序中使用私有框架(而不是修补现有应用程序)?

0 投票
1 回答
2208 浏览

c++ - 可以通过转换为与布局兼容的类型来访问私有成员函数吗?

从这个问题的讨论中,如何在 C++ 中实现私有变量的访问?我提出了一种变体:可以通过强制转换和依赖布局兼容性来调用私有成员函数,而不是访问私有数据成员吗?

一些代码(灵感来自 Herb Sutter 的专栏Uses and Abuse of Access Rights

注意:这有效(至少在 Ideone 上)!新的C++11 标准有什么方法可以通过依赖布局兼容性和 reinterpret_cast / static_cast提供有保证的或至少是实现定义的方法来规避访问控制?

EDIT1:Ideone 上的输出

EDIT2:在 Sutter 的专栏中,他列出了上述代码不能保证有效的两个原因(尽管它在实践中有效)

a) X 和 BaitAndSwitch 的对象布局不能保证相同,尽管实际上它们可能总是相同。

b) reinterpret_cast 的结果是未定义的,尽管大多数编译器会让你尝试按照黑客的意图使用生成的引用。

新的 C++11 标准现在是否提供这些 layout / reinterpret_cast 保证?

0 投票
2 回答
2536 浏览

java - 使用 EasyMock 和 PowerMock 捕获私有方法参数

对于公共方法调用,EasyMock 的 capture() 允许您拦截和检查传递给方法的参数。对于私有方法调用,PowerMock 的 expectPrivate 允许您模拟私有方法调用。

有没有办法以某种方式组合这些并将参数传递给私有方法调用?例子:

在这种情况下,我想检查调用localInstance消耗的对象privateHelperToIntercept()

我找到了很多模拟私有方法调用的例子;PowerMock 的expectPrivate(partiallyMockedObject, "nameOfPrivateMethod", arg1, arg2)效果很好。我还找到了拦截​​传递给公共方法调用的参数的示例;Capture<Type> myTestCapture = new Capture<Type>()结合someMockedObject.PublicMethod(capture(myTestCapture)).

不幸的是,我既不能让两者一起工作,也不能找到将它们结合起来的例子。有没有人看到这样做的方法?

FWIW,我怀疑 Mockito 可以做到这一点,但它不包含在我们的源/构建/测试系统中。如果可能,我想避免在我们的系统中支持新库的过程。

0 投票
1 回答
1053 浏览

ruby-on-rails-3.1 - 在 Twitter API 中使用 object.entities 的私有方法错误

尝试在我的 twitter 提要控制器中调用 tweet.entities 时出现以下错误。

调用#Twitter::Status:0x94d4bf4 的私有方法“实体”

我在代码中没有称为实体的方法,我什至进行了完整的文件搜索来检查。

我要么需要重命名对象的实体部分,要么以某种方式找到这个所谓的私有方法在哪里,或者以某种方式绕过它。我在 twitter_feeds 控制器中的方法如下:

结尾

本质上,我正在向客户端发送一组解析的推文,并希望在服务器上实现链接包装等。

有什么方法可以找到代码认为此方法在哪里,或者有没有办法使它不是私有的或忽略它,以便我可以调用 tweet.entities。

编辑:需要注意的一点是,我确实有一个实体模型和实体控制器,但已经删除它们并且仍然得到它。

谢谢

0 投票
3 回答
18649 浏览

c++ - C++ 中私有成员函数的良好命名约定?

对于会员,我使用

我喜欢用作成员函数的前缀,但以or_开头的名称是保留的,不应使用。___

我的想法是,当我有:

当(lib)用户写点(.)时,查看所有函数(一个接一个)只有public.

这有一个通用的命名约定吗?

我知道,我可以使用pImpl或继承,接口和实现类

0 投票
3 回答
121 浏览

java - 继承内部类的私有方法

让我们看下面的代码:

我希望该代码能够编写B. A改为写。

一个类可以调用它所包含的内部类的私有方法这一事实可能会让人感到奇怪(至少对我而言)(为什么它们会这样?),但我真正无法理解的是为什么多态性不不工作。

我的意思是,如果Test.main()我们可以调用A.testMethod()很明显我们也调用了B.testMethod()。Java也可以确定对象的动态类型,那么为什么Java调用声明类型的方法而不是动态类型的方法呢?可以检查此行为:

另外,为什么只有在Test.A.testMethod()is时才会发生这种情况private

0 投票
4 回答
2940 浏览

cakephp - 控制器应该避免 CakePHP 的私有函数吗?

我想知道 CakePHP 的控制器是否不应该包含任何 URL 无法访问的私有函数。

有时某些函数(例如添加删除)可能太大了,以至于我更喜欢​​将它们分开。我应该将这些函数放在模型中,而不是在控制器上设为私有吗?

谢谢。

0 投票
6 回答
4106 浏览

java - 如何抛出除以 0 的异常?

如果我的斜率的分母为 0,如何抛出异常以输出“计算失败,x1 和 x2 之间没有变化”...以下块是类文件中的方法。

我将结果输出到我的测试文件或包含主要方法的驱动程序类。

0 投票
5 回答
152 浏览

unit-testing - Unit testing private methods seems to make the whole solution easier

Let's suppose there is an utility class (no data) with one complex (as in, hard-to-test) public method. It uses random number generation, return large arrays of data and that fun stuff. However, if you implement it in small private methods, every private method would be easy to test, and thus the whole thing would be easier to test. From the application point of view, only the big method needs to be public, and the other should be private. Yet, testing the private methods results in an easier to test class. How should I approach this problem?