小编Die*_*oia的帖子

Scala:在类型别名不匹配时强制执行编译错误

在分配共享相同底层类型的不同类型别名时,有没有办法获得编译时错误(或至少是警告)?

换句话说,我说这个代码:

type Address = String
type City = String

def foo(x:Address) = ...
Run Code Online (Sandbox Code Playgroud)

如果我这样做,我想获得编译时错误/警告:

val city: City = "Dublin"
foo(city)
Run Code Online (Sandbox Code Playgroud)

据我所知,编译器允许它,因为它们是相同的底层类型.

settings scala type-alias

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

(co)递归定义如何在Haskell中工作?

我正在玩这种语言来开始学习,我对于递归定义的工作方式感到困惑.

例如,让我们采用三角数的序列(TN n = sum [1..n])

提供的解决方案是:

triangularNumbers = scanl1 (+) [1..]
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.

但我提出的解决方案是:

triangularNumbers = zipWith (+) [1..] $ 0 : triangularNumbers
Run Code Online (Sandbox Code Playgroud)

这也是正确的.

现在我的问题是:这如何转化为较低级别的实现?当满足这样的递归定义时,场景背后会发生什么?

recursion haskell declaration corecursion

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

用于列表上的正常类(非大小写)的spray-json

我发现自己处于一种需要将JSON序列化为非案例类的情况.

有一个班级:

class MyClass(val name: String) {
  def SaySomething() : String = {
    return "Saying something... "
  }
}
Run Code Online (Sandbox Code Playgroud)

我为这个类创建了一个JsonProtocol:

object MyClassJsonProtocol extends DefaultJsonProtocol {

  implicit object MyClassJsonFormat extends JsonWriter[MyClass] {
  override def write(obj: MyClass): JsValue =
    JsObject(
      "name" -> JsString(obj.name)
    )
  }
}
Run Code Online (Sandbox Code Playgroud)

稍后在代码中导入协议..

val aListOfMyClasses = List[MyClass]() ... // lets assume that has items and not an empty list
import spray.json._
import MyClassJsonProtocol._

val json = aListOfMyClasses.toJson
Run Code Online (Sandbox Code Playgroud)

在尝试构建项目时,我收到以下错误:

找不到类型为List [MyClass]的JsonWriter或JsonFormat

spray-json已经有了通用列表的格式,我正在为我的班级提供一种格式,会出现什么问题?

提前致谢...!!!

scala scala-2.10 spray-json

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

Java反序列化:final变量值未赋值

我正在探索 Java 序列化和反序列化,但想知道反序列化是如何工作的。

这是我的序列化和反序列化代码:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class Testing{
    public static void main(String[] args){
        Serial obj = new Serial();
        Serial ObjNew = null;
        try{
           FileOutputStream fob= new FileOutputStream("file.src"); 
           ObjectOutputStream oob= new ObjectOutputStream(fob);
           oob.writeObject(obj);
           oob.close();
        }catch(Exception fnf){
            fnf.printStackTrace(System.out);
        }
        try{
            FileInputStream fis = new FileInputStream("file.src");
            ObjectInputStream ois = new ObjectInputStream(fis);
            ObjNew=(Serial)ois.readObject();
        }
        catch(IOException | ClassNotFoundException fnf){
            fnf.printStackTrace(System.out);
        }
        System.out.println("OLD: "+obj);
        System.out.println("NEW: "+ObjNew);

    }
}
Run Code Online (Sandbox Code Playgroud)

这里可序列化类代码:

import java.io.Serializable;
public class Serial implements Serializable { …
Run Code Online (Sandbox Code Playgroud)

java serialization

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

Jmeter动态生成请求的json有效载荷

我有一个Jmeter测试计划,我希望我的HttpSampler发送一个帖子请求.

请求的主体应包含Json,如下所示:

{
  "productIds" : [
    "p1",
    "p2",
    ...
  ]
}
Run Code Online (Sandbox Code Playgroud)

我已经设置了一个随机变量生成器,它可以在每次调用时返回格式正确的productId.我想要做的是通过直接在请求的主体中填充从生成器获取的随机pid的productIds来生成有效负载.类似的东西(假设***是脚本逃脱):

{
  "productIds" : [
     ***
       for i in (1, $productsCount) {
         write("\"$randomPid\"\n")
       }
     ***
  ]
}
Run Code Online (Sandbox Code Playgroud)

可能吗?如果有,怎么样?如果没有,你会如何处理这个问题?

谢谢!

scripting json jmeter

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

资源URL内的Swagger(喷射)路径参数

假设我有一个参数化的资源网址

/customers/{CUSTOMER-ID}/ownedItems/{ITEM-ID}
Run Code Online (Sandbox Code Playgroud)

我应该如何注释/拆分我的喷涂路径(使用spray-swagger插件)生成一个文档,将{CUSTOMER-ID}识别为正确的路径参数?

我的问题是顶级@Api注释采用路径但没有参数,而@ApiOperation可以使用路径参数进行注释,但最后会附加这些参数.换句话说,如果我写:

@Api(value = "/customers/{CUSTOMER-ID}")

@ApiOperation(httpMethod = "GET")
@ApiImplicitParams(Array(
new ApiImplicitParam(name = "ITEM-ID", required = true, dataType = "string", paramType = "path"))
Run Code Online (Sandbox Code Playgroud)

我在UI中仅将ITEM-ID作为可测试参数,而CUSTOMER-ID在报告为{}时只是一个字符串.

我想要两个都是路径参数的东西.

任何的想法?

scala spray swagger

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

Spring Boot:在映射级别指定端口

Spring Boot:我想实现以下目标:一些URL路径映射到一个端口,另一些映射到另一个。

换句话说,我想要类似的东西:

public class Controller1 {
  @RequestMapping(value="/path1", port="8080") public...
  @RequestMapping(value="/path2", port="8081") public...
}
Run Code Online (Sandbox Code Playgroud)

这样我的应用才能响应localhost:8080 / path1和localhost:8081 / path2

在应用内可以有2个独立的控制器。

通过为tomcat实现EmbeddedServletContainerCustomizer,我已经成功地取得了部分成功,但是如果可能的话,能够在控制器内实现此目标也将是一件不错的事情。

可能吗?

port spring spring-boot

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

具有Function <X,Y>值的UnmodifiableMap无法编译

我有一个参考:

public final static LinkedHashMap<String, Function<OrderBean, String>> DELEGATES;
Run Code Online (Sandbox Code Playgroud)

我初始化像这样:

static {
    LinkedHashMap<String, Function<OrderBean, String>> tmp = new LinkedHashMap<>();
    tmp.put(OrderCols.FIELD1, OrderBean::getFIELD1);
    tmp.put(OrderCols.FIELD2, OrderBean::getFIELD2);
    ...        
    DELEGATES = Collections.unmodifiableMap(tmp);
}
Run Code Online (Sandbox Code Playgroud)

在静态块的最后一行(对DELEGATES的赋值),我收到此编译器错误:

错误:(64、48)Java:不兼容的类型:不存在类型变量为K,V的实例,因此java.util.Map符合java.util.LinkedHashMap>

我搞砸了吗?还是不可修改的视图不喜欢函数类型?

java collections function unmodifiable

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