我试图通过改进(和无形)来探索改进类型检查的可能性.
我想用类型来表示间隔或大小的一些约束.
所以,通过精炼,我可以写出这样的东西:
type Name = NonEmpty And MaxSize[_32]
type Driver = Greater[_15]
case class Employee(name : String @@ Name, age : Int @@ Driver = refineLit[Driver](18))
Run Code Online (Sandbox Code Playgroud)
但是,我想用更大的自然表达对比.
type BigNumber = Greater[_1000]
Run Code Online (Sandbox Code Playgroud)
这个不起作用,因为_1000没有定义.已经定义的最后一个是_22
我可以,没有形状Succ,自己制作,但它非常麻烦.
示例:
type _25 = Succ[Succ[Succ[_22]]]
type _30 = Succ[Succ[Succ[Succ[Succ[_25]]]]]
type _40 = Succ[Succ[Succ[Succ[Succ[Succ[Succ[Succ[Succ[Succ[_30]]]]]]]]]]
type _50 = Succ[Succ[Succ[Succ[Succ[Succ[Succ[Succ[Succ[Succ[_40]]]]]]]]]]
type _60 = Succ[Succ[Succ[Succ[Succ[Succ[Succ[Succ[Succ[Succ[_50]]]]]]]]]]
type _70 = Succ[Succ[Succ[Succ[Succ[Succ[Succ[Succ[Succ[Succ[_60]]]]]]]]]]
type _80 = Succ[Succ[Succ[Succ[Succ[Succ[Succ[Succ[Succ[Succ[_70]]]]]]]]]]
type _90 = Succ[Succ[Succ[Succ[Succ[Succ[Succ[Succ[Succ[Succ[_80]]]]]]]]]]
type _100 = Succ[Succ[Succ[Succ[Succ[Succ[Succ[Succ[Succ[Succ[_90]]]]]]]]]]
// etc.
Run Code Online (Sandbox Code Playgroud)
是否有更好的方式表达这种约束,或以_1000 …
我想在一些Java服务(WebMethod设计器9.7)中使用外部jar.我在Internet文档中看到,我必须将我的jar放在Integration Server上的package/code/jars/path中,以及在eclipse中我的项目的构建路径中.但我不知道该怎么做.
我试图把我的jar放进去$swag_instance$/packages/$package_name$/code/jars,重新启动IS,但我有编译时错误.
你可以帮我理解一下我在java服务中使用外部jar时要采取的行动吗?
我想使用scalalatest scalacheck来测试一些具有随机输入值的对象.首先,我尝试了一个简单的示例,但如果我通过Eclipse或sbt启动它,则会抛出错误.代码是:
package test
import org.scalatest._
import org.scalatest.prop.GeneratorDrivenPropertyChecks
class SamplePropGenCheck extends PropSpec with GeneratorDrivenPropertyChecks with Matchers {
property("Int simple test") {
forAll("a") { a : Int =>
whenever (a > 0) {
(a * 2) should be (a + a)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在执行时,我有这个错误:
*** RUN ABORTED ***
java.lang.AbstractMethodError:
org.scalatest.prop.Configuration$$anon$1.TestParams()Lorg/scalacheck/Test$Parameters$TestParams$;
at org.scalacheck.Test$Parameters$class.$init$(Test.scala:98)
at org.scalatest.prop.Configuration$$anon$1.<init>(Configuration.scala:332)
at org.scalatest.prop.Configuration$class.getParams(Configuration.scala:332)
Run Code Online (Sandbox Code Playgroud)
我使用scalatest_2.11-2.2.1和scalacheck_2.11-1.12.3与scala 2.11.6
当我使用TableDrivenPropertyChecks而不是GeneratorDrivenPropertyChecks进行其他测试时,它运行良好.
我在docs或google中找不到任何帮助.是代码错误,错误还是版本问题?有人可以帮我找到解决方案吗?
我想用scala类型系统表示一些约束数据,带有常量.例如在伪代码中,我想写的是这样的,(如果可能的话,可选择使用编译时检查约束)
val data1 : String of 10
val data2 : Int of (0..10)
val data3 : Int of (1..1000)
val data4 : String of 30
// etc.
Run Code Online (Sandbox Code Playgroud)
无需为每种类型编写此类代码:
type Tagged[U] = { type Tag = U }
type @@[T, U] = T with Tagged[U]
object Tag {
@inline def apply[T, U](t: T): T @@ U = t.asInstanceOf[T @@ U]
}
sealed trait StringOf32
object StringOf32 {
def apply(value : String) : String @@ StringOf32 = {
require(value.length <= 32)
Tag(value) …Run Code Online (Sandbox Code Playgroud) 试图了解基本的Scala概念.为什么这段代码没有编译?
case class User(
id: Int,
firstName: String,
lastName: String,
age: Int,
gender: Option[String])
object UserRepository {
val users = Map
( 1 -> User(1, "John", "Doe", 32, Some("male")),
2 -> User(2, "Johanna", "Doe", 30, None)
)
//def findById(id: Int): Option[User] = users
//def findAll = users.values
def getUsers() = { users }
}
for ((k,v) <- UserRepository.getUsers() ){
println(v)
}
Run Code Online (Sandbox Code Playgroud)
错误:(25,42)值过滤器不是对象的成员cala.collection.immutable.Map for((k,v)< - UserRepository.getUsers()){
我期望val用户持有Map?
简单的地图工作正常:
val simpleMap = Map (1 -> "First", 2 -> "Second")
for ((k,v) <- …Run Code Online (Sandbox Code Playgroud) scala ×4
dictionary ×1
eclipse ×1
jar ×1
java ×1
object ×1
scalacheck ×1
scalatest ×1
shapeless ×1
types ×1
webmethods ×1