相关疑难解决方法(0)

在Java中使用不同的返回类型进行重载?

为什么仅通过更改返回类型来重载函数是不可能的?这将在未来的Java版本中发生变化吗?

那么,仅供参考,这在C++中是否可行?

java overloading

92
推荐指数
4
解决办法
8万
查看次数

两个Java方法可以具有相同的名称和不同的返回类型吗?

两个Java方法可以使用不同的返回类型具有相同的名称吗?方法的返回类型不同,它们使用相同的方法名称声明.

这是允许的吗?

java methods return-type

83
推荐指数
6
解决办法
12万
查看次数

不同语言的因子算法

对于阶乘子程序或程序,我希望看到所有不同的方法.希望是任何人都可以来这里看看他们是否想学习一门新语言.

思路:

  • 程序
  • 实用
  • 面向对象
  • 一个衬里
  • 混淆
  • 古怪
  • 糟糕的代码
  • 多语种

基本上我想看一个例子,编写算法的不同方式,以及它们在不同语言中的样子.

请将其限制为每个条目一个示例.如果你试图突出一个特定的风格,语言,或者仅仅是一个经过深思熟虑的想法,我会允许你在每个答案中有不止一个例子.

唯一真正的要求是它必须在所有代表的语言中找到给定参数的阶乘.

有创意!

推荐指南:

# Language Name: Optional Style type

   - Optional bullet points

    Code Goes Here

Other informational text goes here

我会偶尔编辑任何没有正确格式的答案.

language-agnostic algorithm

64
推荐指数
34
解决办法
3万
查看次数

在C++中使用const重载有什么用?

在C++中,函数的签名部分取决于它是否为const.这意味着一个类可以有两个具有相同签名的成员函数,除了一个是const而另一个不是.如果你有这样的类,那么编译器将根据你调用它的对象来决定调用哪个函数:如果它是类的const实例,那么将调用函数的const版本; 如果对象不是const,则将调用另一个版本.

您希望在什么情况下利用此功能?

c++ overloading const function

58
推荐指数
4
解决办法
2万
查看次数

Java - 为什么没有基于返回类型的方法重载?

我知道这是不可能的,但任何人都可以提供一个理论,为什么Java选择不支持这个?我问,因为我遇到了一个我觉得很高兴的情况.

java programming-languages overloading return

43
推荐指数
3
解决办法
2万
查看次数

根据返回值重载C++函数

我们都知道你可以根据参数重载一个函数:

int mul(int i, int j) { return i*j; }
std::string mul(char c, int n) { return std::string(n, c); } 
Run Code Online (Sandbox Code Playgroud)

你能根据返回值重载一个函数吗?根据返回值的使用方式定义一个返回不同内容的函数:

int n = mul(6, 3); // n = 18
std::string s = mul(6, 3); // s = "666"
// Note that both invocations take the exact same parameters (same types)
Run Code Online (Sandbox Code Playgroud)

您可以假设第一个参数介于0-9之间,无需验证输入或进行任何错误处理.

c++ puzzle overloading function

35
推荐指数
5
解决办法
2万
查看次数

是否可以为重载方法使用不同的返回类型?

在方法重载中,是否可以为重载方法设置不同的返回类型?例如,

void foo(int x) ;
int foo(int x,int y);
double foo(String str);
Run Code Online (Sandbox Code Playgroud)

在一般的面向对象编程中,有可能吗?

overloading

29
推荐指数
6
解决办法
8万
查看次数

方法重载返回值

在C#中,我需要能够定义一个方法,但让它返回一个或两个返回类型.我尝试这样做时编译器给出了一个错误,但为什么不知道我需要调用哪种方法呢?

int x = FunctionReturnsIntOrString();
Run Code Online (Sandbox Code Playgroud)

为什么编译器会阻止我使用具有不同返回类型的两个函数?

c# overloading

19
推荐指数
4
解决办法
2万
查看次数

Haskell有返回类型重载吗?

基于我读过的关于Haskell的内容,以及我用GHC做过的实验,似乎Haskell有返回类型重载(又称ad hoc多态).这方面的一个例子是fromInteger可以给你一个Double或一个Integer取决于结果使用位置的函数.例如:

fd :: Double -> String
fd x = "Double"

fi :: Integer -> String
fi x = "Integer"

fd (fromInteger 5)  -- returns "Double"
fi (fromInteger 5)  -- returns "Integer"
Run Code Online (Sandbox Code Playgroud)

Haskell的一个温和的介绍似乎同意这一点,当它说:

到目前为止我们讨论过的那种多态性通常被称为参数多态.另一种称为ad hoc多态,更好地称为重载.以下是ad hoc多态的一些示例:

  • 文字1,2等通常用于表示固定和任意精度整数.

如果数字文字被认为是ad hoc多态(也就是重载)的一个例子,那么似乎对于函数的结果也是如此fromInteger.

事实上,我已经找到了一些关于Stack Overflow的其他问题的答案,这些问题表明Haskell通过返回类型进行了重载.

但是,至少有一个Haskell程序员告诉我这不是返回类型重载,而是"参数多态,其中参数受通用量词约束"的示例.

认为他所得到的是fromInteger从每个实例Num(某种非确定性类型)返回一个值.

这似乎是一个合理的解释,但据我所知,Haskell从不让我们看到这些实例值中的多个(部分归功于Monomorphism限制).我们看来的实际情况似乎也可以静态确定.由于所有这一切,似乎有理由说在表达式fd (fromInteger 5)中子表达式fromInteger 5是类型Double,而在表达式fi (fromInteger 5)中子表达式fromInteger 5 …

polymorphism haskell

18
推荐指数
4
解决办法
2568
查看次数

方法使用不同的返回类型重载

我想深入了解它是否是一个含糊不清或提供的额外功能:

 public class Foo 
 { 
    public int Bar(){
       //code
    }

    public string Bar(int a){
       //code
    }
 }
Run Code Online (Sandbox Code Playgroud)

任何有这方面经验的人,在具有不同参数的返回类型上重载应该是一种不好的做法,是吗?

但是如果重载是在返回类型的基础上完成的,那么为什么这不起作用.

 public class Foo 
 { 
    public int Bar(int a){
       //code
    }

    public string Bar(int a){
       //code
    }
 }
Run Code Online (Sandbox Code Playgroud)

因为它将无法决定调用第一个或第二个函数,如果我们调用obj.Bar(); ,它应该以错误结束任何人都知道为什么它允许第一个代码片段运行.

.net c# oop coding-style

17
推荐指数
4
解决办法
5万
查看次数