繁体   English   中英

是否可以特别使用函数的默认实现?

Is it possible to particularly use the default implementation of a function?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我的代码有效。 我只是想知道是否可以在使用默认实现之前先在实例声明中添加一些内容以进行检查,而不必复制代码。 一个例子:

class (Eq a, Ord a, Show a, Num a) => Fibo a where
  fib :: a -> a
  fib n
    | n == 0 = 0
    | n == 1 = 1
    | otherwise = fib (n-1) + fib (n-2)

instance Fibo Integer where
  fib n
    | n < 0 = -1
    | n == 0 = 0
    | n == 1 = 1
    | otherwise = fib (n-1) + fib (n-2)

但是,它也可以以不必重新实现整个功能的方式编写吗? 就像是:

instance Fibo Integer where
  fib n
    | n < 0 = -1
    | otherwise = default

还是有其他方法可以在两个地方不使用相同代码?

解决方案是不更改默认实现!

1 个回复

只需将通用代码放入辅助函数即可:

foo::(Eq a, Ord a, Show a, Num a) =>a -> a
foo n
    | n == 0 = 0
    | n == 1 = 1
    | otherwise = foo (n-1) + foo (n-2)

class (Eq a, Ord a, Show a, Num a) => Fibo a where
  fib :: a -> a
  fib = foo

instance Fibo Integer where
  fib n
    | n < 0 = -1
    | otherwise = foo n
3 识别使用Javascript value()函数编写

首先,当我选择像这样的表中的一行时,我在javascript中获得了字段的值: 它可以完美工作,因为它可以获取我需要的值,但是现在我在rails中将一个方法合并到文本字段中,如下所示: 它将根据值查找记录,但不起作用当值随javascript代码更改时,仅当我在字段本身中编写时, ...

4 分别使用sleep()和GetAsyncKeyState函数

我试图用C语言制作一个简单的俄罗斯方块游戏程序,并且为了降低速度,我正在使用sleep()但是它也会延迟GetAsyncKeyState()函数,因此我每1个下降块只能使用一次。 谁能解释如何分别使用这两个? ...

2014-05-22 08:34:37 1 147   c/ sleep
5 如何在项目级别使用“默认持久性强制”

我在项目级别将属性“默认持久性实施”设置为true 。 然后,我将用户和关联之间的关系设置为“默认持久性强制”设置为false 。 当我从一种关系导航到另一种关系时,我的属性仍然设置为false 。 现在,当我运行生产者时: 我的财产已还原为true 生成的代码显示给 ...

8 在根级别使用时 rems 和 em 是否等效?

从这个答案我看到规范中rem的定义是什么: 物件单位 等于根元素上font-size的计算值。 当在根元素的font-size属性中指定时,或者在没有根元素的文档中, 1rem等于font-size属性的初始值。 em的定义是: 单位 等于使用它的元素的font-size属性的 ...

9 Bootstrap t.test:对多个分组级别使用apply函数

我需要引导我的“自动” lapply t.test函数来计算Bootstrap统计信息(原始,偏差和标准错误)。这是我到目前为止所获得的基本t.test代码(无引导): 哪个效果很好。 但是,我不确定如何将bootstrap方法合并到此apply函数中。 ...

10 无法识别使用 Cython 编译的外部 C 函数

我正在尝试学习 Cython 并设法直接在文件中使用函数定义编译 .pyx。 我的下一步是尝试编译 .pyx 链接外部 C 函数。 编译成功,但是当我尝试在 Python 脚本中导入模块时,找不到该函数。 在文件“Cython-C.pyx”中: 在文件“setup.py”中: 我已经根据 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM