有人能告诉我为什么这不起作用?
case class XY(enum: MyEnum)
object MyEnum extends Enumeration {
val OP1, OP2 = Value
}
Run Code Online (Sandbox Code Playgroud)
错误:未找到:键入MyEnum
什么是Python相当于Ruby的method_missing方法?我尝试过使用__getattr__但是这个钩子也适用于字段.我只想拦截方法调用.Python的方法是什么?
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)
有一个更好的方法吗?
如何@interface在Scala中创建一个?我老实地觉得这个问题很愚蠢,但我无法在任何地方找到这种语法.我知道你可以使用它们,但是你如何在Scala中实际定义新的呢?
Java的:
public @interface MyAnnotation { }
Run Code Online (Sandbox Code Playgroud)
斯卡拉:
???
Run Code Online (Sandbox Code Playgroud) 我已经阅读过像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)
这是真的吗?
在我没有使用类型系统的语言中开始的每个项目中,我最终开始发明一个运行时类型系统.也许"类型系统"这个词太强大了; 至少,当我使用复杂数据类型时,我创建了一组类型/值范围验证器,然后我觉得需要对可以创建和修改数据类型的位置保持偏执.
直到现在我才三思而后行.作为一名独立的开发人员,我的方法已经在一些小项目中实践,并且没有理由他们现在停止工作.
尽管如此,这一定是错的.我觉得好像我没有"正确"使用动态类型的语言.如果我必须发明一个类型系统并自己强制执行,我也可以使用一种类型的语言.
所以,我的问题是:
以下是您需要考虑的具体示例.我正在使用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) 联合类型和交集类型的各种用例有哪些?最近有很多关于这些类型系统功能的嗡嗡声,但不知怎的,我从来没有觉得需要其中任何一个!
在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
我已多次读过Haskell中的懒惰评估有时会导致空间泄漏.什么样的代码会导致空间泄漏?如何检测它们?并且程序员可以采取哪些预防措施来避免它们?
scala ×5
haskell ×3
type-systems ×2
annotations ×1
class ×1
concurrency ×1
enumeration ×1
erlang ×1
future ×1
java ×1
lisp ×1
oop ×1
pdf ×1
pdfbox ×1
python ×1
ruby ×1
space-leak ×1
types ×1