gpt4 book ai didi

programming-languages - 不同编程语言的重载

转载 作者:行者123 更新时间:2023-12-04 08:40:17 24 4
gpt4 key购买 nike

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。




9年前关闭。




有人可以解释(举例)上下文无关和上下文相关重载之间的区别吗?

最佳答案

我从来没有听说过这些。 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 → stringfoo :: string → () ,因为它们仅在返回类型上有所不同,但具有相同的参数类型。

关于programming-languages - 不同编程语言的重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4639394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com