小编mis*_*tor的帖子

将枚举参数传递给案例类不起作用

有人能告诉我为什么这不起作用?

case class XY(enum: MyEnum)

object MyEnum extends Enumeration {
  val OP1, OP2 = Value 
}
Run Code Online (Sandbox Code Playgroud)

错误:未找到:键入MyEnum

enumeration scala class

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

Python相当于Ruby的'method_missing'

什么是Python相当于Ruby的method_missing方法?我尝试过使用__getattr__但是这个钩子也适用于字段.我只想拦截方法调用.Python的方法是什么?

ruby python oop metaprogramming method-missing

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

尽管失败,如何继续执行Future序列?

traverse来自Future对象的方法在第一次失败时停止.我想要这种方法的宽容/宽容版本,在出现错误时继续执行序列的其余部分.

目前我们已经为我们的utils添加了以下方法:

def traverseFilteringErrors[A, B <: AnyRef]
                           (seq: Seq[A])
                           (f: A => Future[B]): Future[Seq[B]] = {
  val sentinelValue = null.asInstanceOf[B]
  val allResults = Future.traverse(seq) { x =>
    f(x) recover { case _ => sentinelValue }
  }
  val successfulResults = allResults map { result =>
    result.filterNot(_ == sentinelValue)
  }
  successfulResults
}
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

concurrency scala future

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

如何在Scala中定义@interface?

如何@interface在Scala中创建一个?我老实地觉得这个问题很愚蠢,但我无法在任何地方找到这种语法.我知道你可以使用它们,但是你如何在Scala中实际定义新的呢?

Java的:

public @interface MyAnnotation { }
Run Code Online (Sandbox Code Playgroud)

斯卡拉:

???
Run Code Online (Sandbox Code Playgroud)

annotations scala

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

无法使用静态语言创建应用功能?

我已经阅读过像Scala或Haskell这样的静态类型语言,无法创建或提供Lisp apply函数:

(apply #'+ (list 1 2 3)) => 6
Run Code Online (Sandbox Code Playgroud)

或者可能

(apply #'list '(list :foo 1 2 "bar")) => (:FOO 1 2 "bar")
(apply #'nth (list 1 '(1 2 3))) => 2
Run Code Online (Sandbox Code Playgroud)

这是真的吗?

lisp haskell programming-languages scala static-typing

21
推荐指数
3
解决办法
1407
查看次数

如何避免在动态类型语言中创建ad-hoc类型系统?

在我没有使用类型系统的语言中开始的每个项目中,我最终开始发明一个运行时类型系统.也许"类型系统"这个词太强大了; 至少,当我使用复杂数据类型时,我创建了一组类型/值范围验证器,然后我觉得需要对可以创建和修改数据类型的位置保持偏执.

直到现在我才三思而后行.作为一名独立的开发人员,我的方法已经在一些小项目中实践,并且没有理由他们现在停止工作.

尽管如此,这一定是错的.我觉得好像我没有"正确"使用动态类型的语言.如果我必须发明一个类型系统并自己强制执行,我也可以使用一种类型的语言.

所以,我的问题是:

  • 现有的编程范例(对于没有类型的语言)是否避免使用或发明类型系统的必要性?
  • 是否存在关于如何解决静态类型在动态类型语言中解决的问题的共同建议(没有羞怯地重新发明类型)?

以下是您需要考虑的具体示例.我正在使用erlang中的日期时间和时区(一种动态的强类型语言).这是我使用的常见数据类型:

{{Y,M,D},{tztime, {time, HH,MM,SS}, Flag}}
Run Code Online (Sandbox Code Playgroud)

...其中{Y,M,D}是表示有效日期的元组(所有条目都是整数),tztime并且time是原子,HH,MM,SS是表示24小时合理时间的整数,并且是原子Flag之一u,d,z,s,w.

此数据类型通常从输入中解析,因此为了确保有效输入和正确的解析器,需要检查值的类型是否正确,以及有效范围.稍后,将此数据类型的实例相互比较,使其值的类型更加重要,因为所有术语都会进行比较.来自erlang参考手册

number < atom < reference < fun < port < pid < tuple < list < bit string
Run Code Online (Sandbox Code Playgroud)

erlang types programming-languages functional-programming

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

联合类型和交集类型

联合类型和交集类型的各种用例有哪些?最近有很多关于这些类型系统功能的嗡嗡声,但不知怎的,我从来没有觉得需要其中任何一个!

type-systems programming-languages functional-programming

19
推荐指数
3
解决办法
8809
查看次数

使用PDFBox从PDF文档中读取特定页面

如何使用PDFBox从PDF文档中读取特定页面(给定页码)?

java pdf pdfbox

18
推荐指数
2
解决办法
5万
查看次数

可以使用Haskell的类型系统实现此功能吗?

在Scala中,集合上的高阶操作始终在上下文中返回最佳类型.例如,BitSet如果你将int映射到int,你会得到一个BitSet,但是如果你将int映射到字符串,你会得到一个通用Set.同样,如果您map一个Map与产生一对函数,那么你会得到一个Map回报.否则你会变得简单Iterable.map的结果的静态类型和运行时表示都取决于传递给它的函数的结果类型.

scala> Map(2 -> 'a', 6 -> 'b') map { case (k, v) => (k + 1, v.toString) }
res0: scala.collection.immutable.Map[Int,java.lang.String] = Map(3 -> a, 7 -> b)

scala> Map(2 -> 'a', 6 -> 'b') map { _._1 }
res1: scala.collection.immutable.Iterable[Int] = List(2, 6)

scala> import collection.immutable.BitSet
import collection.immutable.BitSet

scala> BitSet(2, 44, 93).map(1 +)
res3: scala.collection.immutable.BitSet = BitSet(3, 45, 94)

scala> BitSet(2, 44, 93).map(_ + "hola") …
Run Code Online (Sandbox Code Playgroud)

haskell type-systems programming-languages functional-programming scala

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

Haskell中的空间泄漏

我已多次读过Haskell中的懒惰评估有时会导致空间泄漏.什么样的代码会导致空间泄漏?如何检测它们?并且程序员可以采取哪些预防措施来避免它们?

haskell functional-programming lazy-evaluation space-leak

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