小编Yuh*_*ang的帖子

是否可以在TypeScript中实现函数接口?

我希望能够做到这一点

class MyFunc extends ((s: string) => boolean) { ... }
Run Code Online (Sandbox Code Playgroud)

这样一个实例MyFunc可以用作一个函数,它接受一个字符串作为输入并返回一个布尔值,如下所示:

const f = new MyFunc();
const b: boolean = f('someString');
Run Code Online (Sandbox Code Playgroud)

这在TypeScript中是否可行?

在Scala等语言中,可以扩展类型String => Boolean,并提供apply实现此目的的方法.

class MyFunc extends (String => Boolean)
val f = new MyFunc()
val b: Boolean = f("someString")
Run Code Online (Sandbox Code Playgroud)

typescript

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

如何在Scala中为泛型类型提供默认类型类?

在Scala中,如果你创建一个类型类,比如代数结构Monoid[T],你可以为不同类型的monoid提供许多默认的类型类实现.

假设一个monoid定义为:

trait Monoid[T] {
  def op(x: T, y: T): T
  def id: T
}
Run Code Online (Sandbox Code Playgroud)

由于String串联操作下的s形成一个monoid,我们可以为这样的Strings 提供一个默认的monoid :

implicit object StringMonoid extends Monoid[String] {
  override def op(a: String, b: String): String = a + b
  override def id: String = ""
}
Run Code Online (Sandbox Code Playgroud)

这很容易,因为String它不是通用类型.

我要求的是如何为Seq[T]s 提供一个默认的monoid,其中type参数阻止我像上面那样创建一个隐式对象.

我可以:

class SeqMonoid[T] extends Monoid[Seq[T]] {
  override def op(a: Seq[T], b: Seq[T]): Seq[T] = a ++ b
  override def id: Seq[T] = Nil …
Run Code Online (Sandbox Code Playgroud)

generics types scala typeclass type-parameter

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

如何在反向引用上应用函数?

说我有以下字符串:

old_string = "I love the number 3 so much"
Run Code Online (Sandbox Code Playgroud)

我想发现整数(在上面的例子中,只有一个数字3),并用一个大于1的值替换它们,即,期望的结果应该是

new_string = "I love the number 4 so much"
Run Code Online (Sandbox Code Playgroud)

在Python中,我可以使用:

r = re.compile(r'([0-9])+')
new_string = r.sub(r'\19', s)
Run Code Online (Sandbox Code Playgroud)

9在匹配的整数数字的末尾追加一个.但是,我想申请更一般的内容\1.

如果我定义一个函数:

def f(i):
    return i + 1
Run Code Online (Sandbox Code Playgroud)

我该如何申请f()\1,这样我可以在更换匹配的字符串old_string喜欢的东西f(\1)

python regex backreference function

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