小编foo*_*bar的帖子

从集合中获取元素

为什么不Set提供一个操作来获得一个等于另一个元素的元素?

Set<Foo> set = ...;
...
Foo foo = new Foo(1, 2, 3);
Foo bar = set.get(foo);   // get the Foo element from the Set that equals foo
Run Code Online (Sandbox Code Playgroud)

我可以问一下是否Set包含一个等于的元素bar,为什么我不能得到那个元素?:(

为了澄清,该equals方法被覆盖,但它只检查其中一个字段,而不是所有字段.因此,两个Foo被认为相等的对象实际上可以具有不同的值,这就是我不能使用的原因foo.

java collections equals set

297
推荐指数
9
解决办法
52万
查看次数

生成n个重复字符串的最简单方法是什么?

给定一个字符c和一个数字n,如何创建一个由n次重复c组成的字符串?手动操作太麻烦了:

StringBuilder sb = new StringBuilder(n);
for (int i = 0; i < n; ++i)
{
    sb.append(c);
}
String result = sb.toString();
Run Code Online (Sandbox Code Playgroud)

当然有一些静态库函数已经为我做了这个吗?

java string character

26
推荐指数
5
解决办法
3万
查看次数

绑定函数中的不对称

ghci> :t (>>=)
(>>=) :: Monad m => m a -> (a -> m b) -> m b
Run Code Online (Sandbox Code Playgroud)

为什么第二个论点(a -> m b)不是(m a -> m b)甚至是(a -> b)?这是什么概念有关单子需要此签名?具有替代签名的类型类是否有意义t a -> (t a -> t b) -> t b.t a -> (a -> b) -> t b

monads haskell

11
推荐指数
5
解决办法
786
查看次数

短路和括号

在处理单个短路运算符时,如何对子表达式进行分组是否重要?

a && b && c && d
a && (b && (c && d))
(a && b) && (c && d)
((a && b) && c) && d
Run Code Online (Sandbox Code Playgroud)

以上表达式是否相同?

c++ evaluation operators parentheses short-circuiting

8
推荐指数
2
解决办法
698
查看次数

从运算符推断类型类

如果我使用+运算符,Haskell会自动推断类型类Num:

> let add x y = x + y
> :t add
add :: Num a => a -> a -> a
Run Code Online (Sandbox Code Playgroud)

这是否意味着我不能拥有一个带+运算符的多个类型类?

haskell overloading type-inference typeclass

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

算一下我分裂的频率

以下函数计算我将一个数字除以另一个数字的频率:

divs n p = if (n `mod` p == 0) then 1 + divs (n `div` p) p else 0
Run Code Online (Sandbox Code Playgroud)

是否有更短的写作方式divs

recursion haskell integer division

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