标签: methods

如果私有帮助方法可以是静态的,那么它们应该是静态的

假设我有一个旨在实例化的类.我在类中有几个私有的"帮助器"方法,它们不需要访问任何类成员,并且只对它们的参数进行操作,返回结果.

public class Example {
   private Something member;

   public double compute() {
       double total = 0;
       total += computeOne(member);
       total += computeMore(member);
       return total;         
   }

   private double computeOne(Something arg) { ... }
   private double computeMore(Something arg) {... } 
} 
Run Code Online (Sandbox Code Playgroud)

有没有特别的理由指定computeOnecomputeMore作为静态方法 - 或任何特殊原因不?

将它们保持为非静态是最容易的,即使它们肯定是静态的而不会引起任何问题.

java methods static static-methods

197
推荐指数
10
解决办法
8万
查看次数

为什么Python代码使用len()函数而不是长度方法?

我知道python有一个len()用于确定字符串大小的函数,但我想知道为什么它不是字符串对象的方法.

更新

好吧,我意识到我很尴尬.__len__()实际上是一个字符串对象的方法.使用字符串对象上的len函数在Python中看到面向对象的代码似乎很奇怪.此外,__len__将名称视为名称而不仅仅是len 也是奇怪的.

python oop methods function string-length

196
推荐指数
6
解决办法
18万
查看次数

为什么需要在Python方法中明确地使用"self"参数?

在Python中定义类的方法时,它看起来像这样:

class MyClass(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y
Run Code Online (Sandbox Code Playgroud)

但是在其他一些语言中,例如C#,您可以使用"this"关键字引用该方法绑定的对象,而不将其声明为方法原型中的参数.

这是一个有意的语言设计决策在Python或是否有一些实现细节需要传递"自我"作为参数?

python oop methods self

187
推荐指数
6
解决办法
9万
查看次数

反思:如何使用参数调用方法

我试图通过参数反射调用方法,我得到:

对象与目标类型不匹配

如果我调用没有参数的方法,它可以正常工作.如果我调用该方法Test("TestNoParameters"),则基于以下代码,它可以正常工作.但是,如果我打电话Test("Run"),我会得到一个例外.我的代码有问题吗?

我最初的目的是传递一系列对象,例如public void Run(object[] options)但这不起作用,我尝试了一些更简单的例如字符串而没有成功.

// Assembly1.dll
namespace TestAssembly
{
    public class Main
    {
        public void Run(string parameters)
        { 
            // Do something... 
        }
        public void TestNoParameters()
        {
            // Do something... 
        }
    }
}

// Executing Assembly.exe
public class TestReflection
{
    public void Test(string methodName)
    {
        Assembly assembly = Assembly.LoadFile("...Assembly1.dll");
        Type type = assembly.GetType("TestAssembly.Main");

        if (type != null)
        {
            MethodInfo methodInfo = type.GetMethod(methodName);

            if (methodInfo != null)
            {
                object result = null;
                ParameterInfo[] …
Run Code Online (Sandbox Code Playgroud)

c# reflection parameters methods invoke

187
推荐指数
7
解决办法
35万
查看次数

接口方法中的最终参数 - 重点是什么?

在Java中,final在接口方法中定义参数并且不遵循实现类中的参数是完全合法的,例如:

public interface Foo {
    public void foo(int bar, final int baz);
}

public class FooImpl implements Foo {

    @Override
    public void foo(final int bar, int baz) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,bar并且在类VS的接口中baz有相反的final定义.

以同样的方式,final当一个类方法扩展另一个类时,不会强制执行任何限制abstract.

虽然final在类方法体内有一些实用价值,但是有没有指定final接口方法参数的点?

java methods final interface class

185
推荐指数
4
解决办法
3万
查看次数

目标C中的方法语法

有人可以为我解释这个方法声明语法吗?在此函数中,返回UIPickerView(iPhone上的老虎机UI)的行数.根据我的理解,Method被称为' pickerView',并返回一个NSInteger.

它传入一个指向UIPickerview的指针,称为' pickerView'...首先,为什么该方法与参数名称相同?

接下来有一个名为component的NSInteger参数,它告诉我们计算行的哪个组件.决定哪个是在方法体内的逻辑.

什么是' numberOfRowsInComponent?它似乎描述了我们返回的值,但它位于参数的中间.

- (NSInteger) pickerView:(UIPickerView *)pickerView 
 numberOfRowsInComponent:(NSInteger)component
{
    if (component == kStateComponent)
        return [self.states count];

    return[self.zips count];
}
Run Code Online (Sandbox Code Playgroud)

methods syntax objective-c

176
推荐指数
4
解决办法
9万
查看次数

如何在Objective-C中传递多个参数?

我已经阅读了几篇关于Objective-C方法语法的文章,但我想我不了解一个方法的多个名称.

我正在尝试创建一个名为getBusStopswith NSStringNSTimeIntervalparameters以及返回类型的方法NSMutableArray.这是我构建方法的方法,但它在运行时显然会出错:

- (NSMutableArray *)getBusStops:(NSString *)busStop
                                (NSTimeInterval *)timeInterval;
Run Code Online (Sandbox Code Playgroud)

我看到了一个方法的另一个例子:

-(NSInteger)pickerView:(UIPickerView *)pickerView
            numberOfRowsInComponent:(NSInteger)component
Run Code Online (Sandbox Code Playgroud)

我不明白为什么这个方法有每个参数的方法名称.我应该做同样的事情:

- (NSMutableArray *)getBusStops:(NSString *)busStop
                        forTime:(NSTimeInterval *)timeInterval
Run Code Online (Sandbox Code Playgroud)

parameters methods syntax objective-c

173
推荐指数
5
解决办法
25万
查看次数

什么是C#中的"静态方法"?

将static关键字添加到方法时意味着什么?

public static void doSomething(){
   //Well, do something!
}
Run Code Online (Sandbox Code Playgroud)

你能把static关键字添加到课堂吗?那意味着什么?

c# methods static

172
推荐指数
5
解决办法
23万
查看次数

我可以在不包含Ruby模块的情况下调用实例方法吗?

背景:

我有一个声明了许多实例方法的模块

module UsefulThings
  def get_file; ...
  def delete_file; ...

  def format_text(x); ...
end
Run Code Online (Sandbox Code Playgroud)

我想从一个类中调用其中的一些方法.你通常如何在ruby中这样做是这样的:

class UsefulWorker
  include UsefulThings

  def do_work
    format_text("abc")
    ...
  end
end
Run Code Online (Sandbox Code Playgroud)

问题

include UsefulThings从中引入所有方法UsefulThings.在这种情况下,我只想要format_text并明确地不想get_filedelete_file.

我可以看到几个可能的解决方案:

  1. 以某种方式直接在模块上调用该方法,而不将其包含在任何地方
    • 我不知道如何做到这一点.(因此这个问题)
  2. 以某种方式包括Usefulthings并且只引入一些方法
    • 我也不知道如何做到这一点
  3. 创建一个代理类,包含UsefulThings在其中,然后委托format_text给该代理实例
    • 这可行,但匿名代理类是一个黑客.呸.
  4. 将模块拆分为2个或更多较小的模块
    • 这也可行,可能是我能想到的最好的解决方案,但我宁愿避免它,因为我最终会扩散数十个和几十个模块 - 管理这将是繁重的

为什么单个模块中有很多不相关的功能?它ApplicationHelper来自一个rails应用程序,我们的团队事实上决定将其作为任何其他地方不具备的特定任何东西的倾倒场.大多数独立的实用程序方法随处可见.我可以将它分解成单独的助手,但是它们中有30个,每个都有1个方法......这似乎没有效果

ruby methods module

171
推荐指数
9
解决办法
12万
查看次数

Java方法名称何时太长?

在过去的几周我已经看到了一些人使用很长的名字一个方法或类(50个字符),这通常是它提高了可读性的前提下,我的看法是,一个长的名字一样,这是一个指标,我们是如果我们需要这么长的名字,试图在方法类中做很多或者太多,但是我想知道你们对它的看法.

一个例子是:

getNumberOfSkinCareEligibleItemsWithinTransaction
Run Code Online (Sandbox Code Playgroud)

java methods

169
推荐指数
11
解决办法
4万
查看次数