启动SBT控制台,它显示:
[info] Building project AYLIEN 1.0 against Scala 2.8.1
[info] using MyProject with sbt 0.7.4 and Scala 2.7.7
Run Code Online (Sandbox Code Playgroud)
如何使用MyProject和sbt 0.7.4以及Scala 2.8.1?请注意我不会询问用于构建我的项目的Scala版本(它是2.8.1,你可以看到),但我宁愿让sbt使用MyProject和Scala 2.8.1.显然,sbt使用它自己的scala版本来处理项目定义(这里是MyProject),它与实际构建项目所使用的不同!或许我错过了什么......?
出于好奇,我试图运行以下内容:
def someFun[_](a:Int) = a
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,没有发出任何错误或警告并且它按照您期望的方式运行(我认为这很好)但是编译器不理解类型参数的冗余是正常的,或者它可能意味着使它成为可能(语义上?)与此不同:
def someFun(a:Int) = a
Run Code Online (Sandbox Code Playgroud) 据我了解,可以按名称从代码覆盖范围中排除文件和目录,但是否可以通过匹配模式来排除?
我之所以这样问,是因为我不想在我view的文件中一一提及所有子文件夹的路径phpunit.xml。<exclude>*/view</exclude>大概是这样吗?我的意思是“将所有view到达的文件夹都排除在外”。
有企业和人.用户可以喜欢或发布关于商家的评论,但对于一个人来说也不会发生同样的事情.当用户发布有关某个商家或喜欢它的内容时,该商家称之为target喜欢或发布:
trait TargetingRelation[TargetingType[_],TargetedType]
class Business
class Person
class Post[Target | TargetingRelation[Business,Post] ] {
def target:Target
}
class Like[Target | TargetingRelation[Business,Like] ] {
def target:Target
}
Run Code Online (Sandbox Code Playgroud)
在这里,我发明了一种T | P[T]符号意义类型参数T,使其满足某些属性P[T](或者T :|: P[T]如果它具有更多的类型吸引力).代码中的其他地方我想要声明如下:
object canPostAboutBusiness extends TargetingRelation[Post,Business]
object canLikeBusiness extends TargetingRelation[Like,Business]
Run Code Online (Sandbox Code Playgroud)
这些对象实际上是证据,类似于Haskell类型类.所以这会打字检查:
val p = new Post[Business]
val l = new Like[Business]
Run Code Online (Sandbox Code Playgroud)
但不是这个:
val p = new Post[Person]
val l = new Like[Person]
Run Code Online (Sandbox Code Playgroud)
就我对Scala的认识而言,我无法以令人满意的方式对这种特殊情况进行建模.现在我坚持认为这不是子类型,因为商业不是:
class …Run Code Online (Sandbox Code Playgroud) generics scala typeclass parametric-polymorphism type-constructor
我想知道当我调试Scala代码而不是Java代码时它与调试器(Intellij IDEA + Scala插件)有什么不同.根据我的理解,调试器与语言紧密耦合,即Java调试器无法处理Scala代码,但显然JVM是这里的关注焦点,只要它是字节码,任何调试器都可以.对 ?
重要更新:问题是举例说明字节码调试器如何限制Scala.假设达到了一个断点,我不想转到下一行,但我希望调试器在应用程序的上下文中评估Scala表达式(例如,我喜欢从单例对象调用一个运算符方法).调试器被卡住了,因为它无法理解Scala.我必须自己进行转换并将生成的Java输入到调试器.问题是只能在字节码级别处理"断点东西".如果你想表达一个表达式怎么办?调试器必须了解Scala来评估观察到的表达式,对吧?这次我确定我是对的.复仇是我的,耶和华说;-)
我们有一个工作流引擎,它提供了可用工作流的列表(我的意思是工作流定义,而不是实例),用户可以点击任何工作流旁边的"执行"链接,以便执行该工作流的新实例.我想以BDD方式执行此"执行工作流程"故事(功能?).
Story: execute a workflow
Scenario: execute a workflow by clicking on execute link in workflow list and nothing goes wrong
Given I am a user with sufficient rights
And I have added a workflow called "wf"
When I click on the execute link next to "wf" in the workflows list
When I view the list of workflow executions
Then the output is:
"""
1 | wf1 | not started
"""
Run Code Online (Sandbox Code Playgroud)
(第1列:项目#,第2列:工作流程名称,第3列:州)
我觉得这更像是一个混乱,而不是一个漂亮的DBB场景,我特别关注验收标准.我的想法并不清楚我应该如何处理粗粒度和用户耦合的内容,如"执行工作流程".我的意思是,当你正在使用API时,一切都很清楚,但是如果你描述了一些通过(人类)用户交互启动的行为,并且从启动另一个具有复杂输出的用例(如列表)中可以明显看出的项目).知道工作流确实被执行的标准是在工作流执行列表中看到一个新项目,这是另一个故事.我有点在这里感到困惑.
我应该与数据库层进行通信并检查存储新创建的工作流实例的行 - 或者 - 我应该检查是否存在指向工作流执行列表中新实例的项目?如果第二个,那究竟是怎么回事?我应该检查一个方案中的所有列以及它自己的方案中的每一列中的正确值吗?
有ApplicativeError[F,E]+F[A]并且有Either[E, A]。两者都传达了函数可能失败E或成功的消息,A但我不确定它们向客户端传达的关于处理错误的预期方式的不同消息:
def f1[F[_]: Applicative[F]]: F[Either[E, A]]
def f2[F[_]: ApplicativeError[F,E]]: F[A]
Run Code Online (Sandbox Code Playgroud)
我理解的f1意思是:客户端负责错误处理。但是f2对于客户来说如何处理错误意味着什么呢?
据List[+T]我了解,狗的列表也是与直觉完全一致的动物列表。据def :: [B >: A](elem: B): List[B]我所知,我可以将动物(B,不太具体)添加到狗(A,更具体)列表中,并会取回动物列表。这也符合直觉。所以基本上List是好的。
据Array[T]我了解,一组狗不是(不能用来代替 a)一组相当违反直觉的动物。一组狗确实也是一组动物,但显然 Scala 不同意。
我希望有人能直观地解释为什么Array是不变的,最好是用狗(或猫)来解释。
还有为什么阵列不变,但名单协变?但我正在寻找一个更直观的解释,它不(大量)涉及类型系统。
我正在通过"Scala for the Impatient"一书中的练习来学习Scala.一个问题是:
给定一个可变
Pair[S, T]类,使用类型约束来定义一个交换方法,如果类型参数相同,则可以调用该方法.
我的代码:
class Pair[T, S](var first: T, var second: S) {
def swap(implicit ev: T =:= S) {
val temp = first
first = second // doesn't compile
second = temp
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码失败,并抱怨编译first和second是不同的类型.好吧,我很好地告诉编译器他们不是.怎么能告诉它闭嘴?
Dunno如何表达我的困惑,但这就是我的想法:一个透明(或半透明)边的立方体不是一个坚固的(填充的,填充的)立方体.它更像是一个空的玻璃立方体.现在我想要的是一个坚固的填充玻璃立方体.就像一个水晶球,但立方体形状.它们背后的东西看起来有所不同.我如何告诉OpenGL我的几何体被塞满了?我如何实现从一层非常厚的玻璃后面看一些场景的效果?
scala ×7
generics ×2
types ×2
analysis ×1
applicative ×1
arrays ×1
bdd ×1
cats-effect ×1
debugging ×1
invariance ×1
jvm ×1
opengl ×1
php ×1
phpunit ×1
reflection ×1
sbt ×1
scala-cats ×1
transparency ×1
typeclass ×1