小编Cli*_*amp的帖子

函数参数中的Ruby解构

你能直接在 Ruby 中解构函数参数吗:

def get_distance(p1,p2)
  x1,y1 = p1
  x2,y2 = p2
  ((y2-y1)**2 + (x2-x1)**2)**0.5
end
Run Code Online (Sandbox Code Playgroud)

我尝试了显而易见的:

def get_distance([x1,y1],[x2,y2])
  ((y2-y1)**2 + (x2-x1)**2)**0.5
end
Run Code Online (Sandbox Code Playgroud)

但是编译器不喜欢那样。

ruby destructuring

5
推荐指数
1
解决办法
1985
查看次数

如何编写一个QuickCheck属性,该属性需要一个非空的非零数字列表?

这是一个hack(cogsRpm用户提供的函数,应该匹配go的输出):

propCheck ns = cogsRpm (ns ++ [42])  == go (ns ++ [42])
Run Code Online (Sandbox Code Playgroud)

我添加了42来停止生成零长度列表的快速检查.它也可能会失败,因为它也不应该在那里有零.

我阅读了文档,但是没有足够的例子来解析如何实际使用它们.我确实设法在另一个案例中得到这个:

prop_check (Positive x) (Positive y)  = updateHealth x y == if y > x then 0 else x-y
Run Code Online (Sandbox Code Playgroud)

这迫使阳性,我试图结合了一堆东西来获得listOf1NonZero,但我无法找出语法,因此黑客将元素添加到列表中.我该如何避免这种黑客攻击?

haskell quickcheck

3
推荐指数
1
解决办法
142
查看次数

列表推导中的警卫不会终止无限列表?

我想这个:

[i | i <- [1..], i < 5]
Run Code Online (Sandbox Code Playgroud)

会产生

[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

就像

take 4 [i | i <- [1..]]
Run Code Online (Sandbox Code Playgroud)

有限长度列表.

但它没有,它似乎是无限的,因为任何将它视为有限列表的尝试只会导致挂起(ghci).

我不确定如何理解这一点.它是某种无限的发电机,它只是在第四项之后什么都不产生但从未停止过?

基本上代码不断生成新项目,因为它不知道它们永远不能满足标准?

haskell

1
推荐指数
1
解决办法
110
查看次数

1
推荐指数
1
解决办法
1455
查看次数