小编vol*_*a17的帖子

如何使用精炼来表达约束大于22的约束

我试图通过改进(和无形)来探索改进类型检查的可能性.

我想用类型来表示间隔或大小的一些约束.

所以,通过精炼,我可以写出这样的东西:

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 …

scala shapeless

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

如何在webMethods Integration Server和webMethods Designer中添加外部jar以开发java服务

我想在一些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时要采取的行动吗?

java eclipse webmethods jar

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

无法使用GeneratorDrivenPropertyChecks启动测试

我想使用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 scalatest scalacheck

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

如何使用通用约束类型

我想用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)

types scala

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

包含未按预期运行的对象的映射Scala

试图了解基本的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)

dictionary scala object

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