对于喜欢命令max选项na.rm是默认设置FALSE.我理解为什么这一般是一个好主意,但我想将它逆转一段时间 - 即在会议期间.
na.rm = TRUE每当它是一个选项时,我怎么能要求R设置?我发现
options(na.action = na.omit)
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我知道我可以na.rm=TRUE为我写的每一个函数设置一个选项.
my.max <- function(x) {max(x, na.rm=TRUE)}
Run Code Online (Sandbox Code Playgroud)
但这不是我想要的.我想知道是否有一些我可以在全球/普遍做的事情,而不是为每个功能做这件事.
我写了两个动作来测试action和action.asyc之间的区别.但是,我发现在Thread.sleep完成后,这两个方法都返回值.action.asyc应该根据描述立即返回值吗?
def intensiveComputation(): Int = {
Thread.sleep(5000)
return 1
}
def testPromise() = Action {
Ok("sync" + intensiveComputation())
}
def testPromise = Action.async {
val futureint = scala.concurrent.Future { intensiveComputation() }
futureint.map(i => Ok("async" + i))
}
Run Code Online (Sandbox Code Playgroud) 我想测试我的方法,这需要上传文件.它初始化如下:
val tempFile = TemporaryFile(new java.io.File("/home/ophelia/Desktop/students"))
val part = FilePart[TemporaryFile](
key = "students",
filename = "students",
contentType = Some("text/plain"),
ref = tempFile)
val files = Seq[FilePart[TemporaryFile]](part)
val formData = MultipartFormData(
dataParts = Map(),
files = Seq(part),
badParts = Seq(),
missingFileParts = Seq())
Run Code Online (Sandbox Code Playgroud)
我将它传递给FakeRequest:
val result = route(
FakeRequest(POST, "/api/courses/"+"4f3c4ec9-46bf-4a05-a0b2-886c2040f2f6"+"/import" )
.withHeaders("Authorization" -> ("Session " + testSessionA.id.string))
.withMultipartFormDataBody(formData)
)
Run Code Online (Sandbox Code Playgroud)
但是当我运行测试时,我收到以下错误:
Cannot write an instance of play.api.mvc.AnyContentAsMultipartFormData to HTTP response. Try to define a Writeable[play.api.mvc.AnyContentAsMultipartFormData]
Run Code Online (Sandbox Code Playgroud)
我做错了什么以及如何解决?我在互联网上看,我没有找到任何有用的方法来理解和解决这个问题.