haskell(12)

本博客所有内容是原创,未经书面许可,严禁任何形式的转载。

http://blog.csdn.net/u010255642


11、模式匹配

模式匹配主要用来定义一些数据必须遵循的规则,根据他们来解析数据。在定义函数的时候,可以为不同的模式定义不同的函数体。

我们在mytest.hs中定义一个函数mynum,为不同的参数定义不同的实现

--pattern matching

mynum :: (Integral a)=>a->String

mynum 1="one"

mynum 2="two"

mynum 3="three"

mynum 4="four"

mynum 5="five"

mynum 6=">five"

mynum x="not between 1~6"

加载后运行

 *Main> :l H:/my_docs/mytest.hs

[1 of 1] Compiling Main             ( H:\my_docs\mytest.hs, interpreted

Ok, modules loaded: Main.

*Main> mynum (-10)

"not between 1~6"

*Main> mynum (9)

"not between 1~6"

*Main> mynum 1

"one"

*Main> mynum 8

"not between 1~6"

*Main> mynum 6

">five"

*Main>

再定义一个累加函数 

--pattern matching

mysum :: (Integral a)=>a->a

mysum 0=0

mysum n=n + mysum (n-1) 

加载后运行 

*Main> :l H:/my_docs/mytest.hs

[1 of 1] Compiling Main             ( H:\my_docs\mytest.hs, interpreted )

Ok, modules loaded: Main.

*Main> mysum 6

21

*Main> mysum 100

5050

*Main> mysum 3

6

*Main> mysum 2

3

当参数与函数定义的参数规则匹配时,则直接调用这个函数相应的实现,否则调用函数的其它匹配。

比如:

mysum 0=0

mysum n=n + mysum (n-1) 

当参数与0匹配时,即为0时,则调用相应的实现,返回0,否则将与mysum n中的参数相匹配,返回n + mysum (n-1),实现递归。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值