Tag: 参数多态性

什么是Javascript中的多态性?

我已经阅读了一些我可以在互联网上find的关于多态性的文章 。 但是我觉得我不太明白它的意思和它的重要性。 大多数文章没有说明为什么它是重要的,我怎么能在OOP中实现多态行为(当然在JavaScript中)。 我不能提供任何代码示例,因为我还没有想法如何实现它,所以我的问题如下: 它是什么? 为什么我们需要它? 怎么运行的? 我怎么能在JavaScript中实现这种多态行为? 我有这个例子。 但是这个代码的结果是容易理解的。 它没有给出关于多态性本身的清晰的概念。 function Person(age, weight) { this.age = age; this.weight = weight; this.getInfo = function() { return "I am " + this.age + " years old " + "and weighs " + this.weight +" kilo."; } } function Employee(age, weight, salary) { this.salary = salary; […]

为什么Haskell的`head`会在空列表中崩溃(或者为什么*不会返回一个空列表)? (语言哲学)

请注意其他潜在的贡献者:请不要犹豫,使用抽象或math符号来expression您的观点。 如果我发现你的答案不清楚,我会请求澄清,但是可以随意以舒适的方式expression自己。 要清楚的是:我不是在寻找一个“安全的” head ,也不是特别有意义的head的select。 问题的实质是关于head和head'的讨论,这些提供了背景。 我已经跟Haskell打了几个月了(到了它已经成为我的主要语言的地步了),但是我承认对于一些更高级的概念和语言的哲学的细节并不是很了解我非常乐意学习)。 那么我的问题就不是技术问题了(除非是这个问题,我只是没有意识到),因为这是一个哲学问题。 对于这个例子,我是说head 。 我想你会知道, Prelude> head [] *** Exception: Prelude.head: empty list 这head :: [a] -> a 。 很公平。 显然,不能返回(挥手)没有types的元素。 但同时,定义也很简单(如果不是微不足道的话) head' :: [a] -> Maybe a head' [] = Nothing head' (x:xs) = Just x 在某些陈述的评论部分,我已经看到了这方面的一些小讨论。 值得注意的是,一个Alex Stangl说 “有充分的理由不要让一切”安全“,并在违反先决条件时抛出exception。 我不一定质疑这个说法,但我很好奇这些“好理由”是什么。 另外,保罗·约翰逊说, '例如,你可以定义“safeHead :: [a] – >也许是一个”,但是现在不是处理一个空列表或者certificate它不能发生,你必须处理“Nothing”或者certificate它不能发生“。 我从这个评论中读出的语气表明,这在困难/复杂性/某事方面显着增加,但我不确定我是否掌握了他在那里展示的内容。 […]