有人可以请解释(例如)与上下文无关和依赖于上下文的重载之间的区别吗?以不同的编程语言重载
3
A
回答
6
我从来没有听说过这些。 Google上只有大约五个点击,其中一个就是这个问题,这似乎暗示这些是构成术语。就像任何虚构的术语一样,如果你想知道它是什么意思,你必须询问完成它的人。
从我能收集的很少,它似乎与基于返回类型的重载有关。
基本上,如果你有四个重载函数像这样:
foo :: string → int
foo :: string → string
foo :: string →()
foo :: int → int
而你打电话给他们这样的:
1 + foo 1
1 + foo "one"
foo "one"
然后,与上下文相关的超载(即超载根据返回类型以及参数类型),将选择以下实现:
1 + foo 1 # foo :: int → int
1 + foo "one" # foo :: string → int (because `+` takes an `int`)
foo "one" # foo :: string →() (because there is no return value)
而与上下文无关的重载(即忽略返回类型),下面的实施方式将被选择:
1 + foo 1 # foo :: int → int
1 + foo "one" # ERROR
foo "one" # ERROR
在ERROR
案件两者有foo :: string → int
,foo :: string → string
和foo :: string →()
之间的模糊性,因为它们只在它们的返回类型不同,但具有相同的paremeter类型。
0
从here引用:
有两种 功能/操作符的过载。
的类型
- 背景独立的 - 重载只对参数进行到操作数 功能或类型的 操作者
- 上下文依赖性 - 这抽象调用也取决于 结果
相关问题
- 1. 不同编程语言的随机数
- 2. 板载Symbian编程语言
- 3. 程序如何使用以不同语言编写的文件?
- 4. 对于iPhone,您可以编程使用不同的语言吗?
- 5. 不同的编程语言如何处理除以0?
- 6. 可以以编程方式安装Windows Phone语言语言吗?
- 7. 编程语言
- 8. 编程语言的原语
- 9. 管理用不同编程语言编写的并发项目
- 10. 以新的编程语言实现xunit
- 11. 编译不同的语言在Eclipse上
- 12. 如何编写和不同的语言
- 13. 以不同编程语言访问的套接字是否可以通信?
- 14. 不同语言
- 15. 不同的语言
- 16. 除C++外,哪些编程语言支持运算符重载?
- 17. 雅虎天气以不同的语言
- 18. 使用不同的GPL(通用编程语言)实现的DSL(域特定编程语言)
- 19. .NET编程语言
- 20. java编程语言
- 21. Siri编程语言
- 22. Scheme编程语言
- 23. NesC编程语言
- 24. SIMD编程语言
- 25. 更改语言而不重新加载
- 26. 编程语言语法
- 27. 如何暴露以不同语言编写的对象/函数?
- 28. 以编程方式更改WinXP语言
- 29. 以编程方式设置Wordpress语言?
- 30. 以编程方式切换Prestashop语言