小编Lai*_*uan的帖子

gsub如何使用'*','+'和'?'

"111".gsub(/1?/, "2")
 => "2222" 

"111".gsub(/1/, "2")
 => "222"

"111".gsub(/1*/, "2")
 => "22"

"111".gsub(/1+/, "2")
 => "2"
Run Code Online (Sandbox Code Playgroud)

为什么以及如何如上所述?

ruby regex

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

在非Rails应用程序中需要Gemfile中的所有gem?

当我们编写Rails应用程序时,它需要Gemfile为我们定义的所有宝石.

如何制作非Rails应用程序呢?

gem bundler

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

扩展方法如何与继承一起使用?

我知道魔法的前半部分.假设我有:

public class Foo {}
public class static FooExt
{
    public static void M(this Foo f) {}
}
Run Code Online (Sandbox Code Playgroud)

当我调用foo.M()编译器时将其更改为FooExt.M(foo).

但继承怎么样?例如:

public class Bar : Foo {}
public class static BarExt
{
    public static void M(this Bar b) {} 
}
Run Code Online (Sandbox Code Playgroud)

当我调用bar.M()它会打电话FooExt.M()还是BarExt.M()?事实上,我测试了它,答案是BarExt,但为什么呢?wow.M()如果我有另一个Wow : Foo但没有,我会打电话怎么WowExt.M()办?

c# inheritance extension-methods

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

为什么Map的+运算符需要双括号?

例如:

val m = Map[Int, Int]()
m + (1, 1) // doesn't work!
m + ((1, 1)) // works!
Run Code Online (Sandbox Code Playgroud)

我知道(1, 1)是一个Tuple2,但那么前者为何不起作用?我可以避免这种古怪的双括号吗?

scala

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

如何枚举数组中的连续元素?

例如,我有一个

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

如果我打电话arr.each,我会访问:

1
2
3
4
Run Code Online (Sandbox Code Playgroud)

但我想要

1 2
2 3
3 4
Run Code Online (Sandbox Code Playgroud)

内置功能有可能吗?如果没有,最佳做法是什么?

另一个问题:如果我想要1 23 4

ruby enumerable

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

TCP套接字如何知道它已读取所有内容?

有一个非常简单的socket服务器实现boost::asio.

tcp::acceptor a(io_service, tcp::endpoint(tcp::v4(), port));
tcp::socket(io_service) sock;
a.accept(sock);
char data[1024];
boost::system::error_code error;
size_t length = sock->read_some(boost::asio::buffer(data), error);
std::cout << "Got: " << data << std::endl;
Run Code Online (Sandbox Code Playgroud)

它的客户端看起来像:

size_t request_length = strlen(request);
boost::asio::write(s, boost::asio::buffer(request, request_length));
Run Code Online (Sandbox Code Playgroud)

(两者都来自官方的例子)

当我发送hello, world!到套接字时,我Got: hello, world!立即得到了.但它的缓冲区有1024个字节.怎么知道什么时候读完?

编辑:

对不起,我的描述很糟糕.我的问题是如何read_some()知道何时应该返回.

sockets tcp boost-asio

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

除了Equals(Object)之外,我为什么要实现Equals(type)?

当我需要定义自己的Equals方法时,我只会Equals(Object)在我的类中重写.

但是MSDN说:

还建议除了实现Equals(object)之外,任何类还为自己的类型实现Equals(type),以提高性能.

但它怎么能提高性能呢?我只能拨打这两种方法中的一种,不是吗?

c# overriding

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

我该如何解释像"fill [A](n:Int)(elem:⇒A)"这样的签名?

scaladocVector#fill样子:

def fill[A](n: Int)(elem: ? A): Vector[A]
n the number of elements contained in the collection.
elem the element computation
returns A collection that contains the results of n evaluations of elem.
Run Code Online (Sandbox Code Playgroud)

但这就是我调用它的方式:

Vector.fill[Boolean](5)(true)
Run Code Online (Sandbox Code Playgroud)

在哪里elem?这是什么意思?

methods scala

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

Scala:可选的类型参数?

我写了一个像这样的方法:

def typeOnly[T, S](seq: Seq[S]): Seq[T] = {
  seq.flatMap{
    case t: T => Some(t)
    case _ => None
  }
}
Run Code Online (Sandbox Code Playgroud)

我希望以这种方式调用它:

typeOnly[String](List(1, "2", 3, "4"))
Run Code Online (Sandbox Code Playgroud)

它不起作用.我似乎必须指定第二个类型参数S:

typeOnly[String, Any](List(1, "2", 3, "4"))
Run Code Online (Sandbox Code Playgroud)

但为什么?如果不是编译器知道的事实List(1, "2", 3, "4")Seq[Any]

generics scala

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

' - >'是运营商吗?它返回了什么?

在Scala中,我可以这样构建Map:

val map = Map(1 -> "one", 2 -> "two", 3 -> "three")
Run Code Online (Sandbox Code Playgroud)

但是它做了什么?应该评估参数,因此1 -> "one"有一个值.那是什么?

我也注意到这个表达式返回true:

scala> 1 -> "one" == (1, "one")
res1: Boolean = true
Run Code Online (Sandbox Code Playgroud)

那有什么区别?

scala

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