在分配共享相同底层类型的不同类型别名时,有没有办法获得编译时错误(或至少是警告)?
换句话说,我说这个代码:
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)
据我所知,编译器允许它,因为它们是相同的底层类型.
我正在玩这种语言来开始学习,我对于递归定义的工作方式感到困惑.
例如,让我们采用三角数的序列(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)
这也是正确的.
现在我的问题是:这如何转化为较低级别的实现?当满足这样的递归定义时,场景背后会发生什么?
我发现自己处于一种需要将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已经有了通用列表的格式,我正在为我的班级提供一种格式,会出现什么问题?
提前致谢...!!!
我正在探索 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) 我有一个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)
可能吗?如果有,怎么样?如果没有,你会如何处理这个问题?
谢谢!
假设我有一个参数化的资源网址
/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在报告为{}时只是一个字符串.
我想要两个都是路径参数的东西.
任何的想法?
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,我已经成功地取得了部分成功,但是如果可能的话,能够在控制器内实现此目标也将是一件不错的事情。
可能吗?
我有一个参考:
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>
我搞砸了吗?还是不可修改的视图不喜欢函数类型?
scala ×3
java ×2
collections ×1
corecursion ×1
declaration ×1
function ×1
haskell ×1
jmeter ×1
json ×1
port ×1
recursion ×1
scala-2.10 ×1
scripting ×1
settings ×1
spray ×1
spray-json ×1
spring ×1
spring-boot ×1
swagger ×1
type-alias ×1
unmodifiable ×1