我是sbt-assembly的长期和快乐的用户,但是在新项目中使用SBT 0.13.0和sbt-assembly 0.10.1时遇到了问题.
我之前使用过这样的代码:
import sbtassembly.Plugin._
import AssemblyKeys._
lazy val sbtAssemblySettings = assemblySettings ++ Seq(
// Slightly cleaner jar name
jarName in assembly <<= (name, version) { (name, version) => name + "-" + version + ".jar" }
)
lazy val buildSettings = ... ++ sbtAssemblySettings
Run Code Online (Sandbox Code Playgroud)
在以前版本的SBT/sbt-assembly中,这对我来说很好,但我现在收到错误:
type mismatch;
[error] found : String
[error] required: sbt.Task[String]
[error] jarName in assembly <<= (name, version) { (name, version) => name + "-" + version + ".jar" }
[error] ^
[error] one error …Run Code Online (Sandbox Code Playgroud) 这是一个魔兽世界(魔兽世界)lua脚本问题.这里没有多少人被问到,但我无处可转,Stackoverflow是程序员绿洲的答案.
题:
Wowwiki说第2,第3,第4个参数是你的调用函数第1,第2,第3个参数.我不认为这是真的.我发现第3,第4,第5个参数最终成为第1,第2,第3个参数.
链接:http://www.wowwiki.com/API_pcall
功能:
function myTest(arg1)
return arg1 .. 10;
end
Run Code Online (Sandbox Code Playgroud)
问题:
local retOK, ret1 = pcall(myTest,"string value");
Run Code Online (Sandbox Code Playgroud)
当我尝试样本时,我得到一个错误"尝试在本地'arg1'上执行连接(一个零值)".如果我将代码更改为:
local retOK, ret1 = pcall(myTest,"string value", "bob");
Run Code Online (Sandbox Code Playgroud)
然后我得到"bob10"的输出.第二个论点去哪里了,它的用途是什么?
更多测试:
function BobsToolbox:RunTest()
local test1, value1 = pcall(BobsToolbox.Test1, "string value");
SharpDeck:Print("Test1: " .. tostring(test1) .. " Value: " .. tostring(value1));
end
function BobsToolbox:Test1(arg1)
return arg1 .. "10";
end
Run Code Online (Sandbox Code Playgroud)
结果:尝试连接本地'arg1'(零值)
function BobsToolbox:RunTest()
local test1, value1 = pcall(Test1, "string value");
SharpDeck:Print("Test1: " .. tostring(test1) .. " Value: " .. tostring(value1));
end …Run Code Online (Sandbox Code Playgroud) 我正在使用这个优秀的教程作为基础在Haskell中做一些简单的正则表达式工作,并且我遵循作者的建议使用显式类型签名来使=~regexp运算符返回a String.我的问题是我想进一步操纵它(基本上toUpper是结果),我不太明白如何做到这一点.
我已经尝试了下面的每一个,每个我得到一个Couldn't match expected type 'String' against inferred type 'Char'错误或类似的:
getSKU :: FilePath -> String
getSKU path =
toUpper $ path =~ "^sku[0-9]{5}" :: String
-- or...
getSKU path =
let key = (path =~ "^sku[0-9]{5}")
in toUpper key
-- or ...
getSKU =
toUpper . sub
where
sub p = (p =~ "^sku[0-9]{5}") :: String
Run Code Online (Sandbox Code Playgroud)
我很难过 - 如何通过表达式表达类型签名,而不需要使用整个单独的函数?
基本上我想做这样的事情:
class Shape
class CoordSystem
class C3D(val x: Double, y: Double, z: Double) extends CoordSystem
class C2D(val x: Double, y: Double) extends CoordSystem
abstract class Shape {
def getCoords[C <: CoordSystem]: List[C]
}
class Pyramid extends Shape {
def getCoords: List[C3D] =
List(new C3D(1,2,1), new C3D(1,1,1), new C3D(2,2,1), new C3D(2,1,1), new C3D(1.5,1.5,3))
}
>> error: class Pyramid needs to be abstract, since method getCoords in class Shape of type [C <: CoordSystem]List[C] is not defined
Run Code Online (Sandbox Code Playgroud)
我已经在这个问题上看到了一些不同的想法,但是它们似乎都不适合这种情况 - 因为它们似乎不允许我在其他地方编写代码,这些代码 …
我正在Clojure为Snowplow构建一个事件收集器(使用Ring/Compojure),并且在使用Ring提供透明像素时遇到一些麻烦.这是我发送像素的代码:
(ns snowplow.clojure-collector.responses
(:import (org.apache.commons.codec.binary Base64)
(java.io ByteArrayInputStream)))
(def pixel-bytes (Base64/decodeBase64 (.getBytes "R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==")))
(def pixel (ByteArrayInputStream. pixel-bytes))
(defn send-pixel
[]
{:status 200
:headers {"Content-Type" "image/gif"}
:body pixel})
Run Code Online (Sandbox Code Playgroud)
当我启动服务器时,第一次点击路径时send-pixel,像素已成功传送到我的浏览器.但是第二次 - 以及每次之后 - Ring都没有发送正文(内容长度为0).重新启动服务器,它是相同的模式.
一些事情不是:
wget,以确认间歇性不是浏览器缓存问题"R01GOD..."在命令行(cat original.gif | base64)生成了base64字符串,所以知道那里没有问题diff original.gif received-pixel.gif)我是Clojure的新手 - 我的猜测是我的代码中有一些令人尴尬的动态gremlin,但我需要帮助发现它!
如果我正在使用json4s(使用Jackson绑定):
scala> import org.json4s._
scala> import org.json4s.jackson.JsonMethods._
scala> parse(""" { "numbers" : [1, 2, 3, 4] } """)
res0: org.json4s.JsonAST.JValue =
JObject(List((numbers,JArray(List(JInt(1), JInt(2), JInt(3), JInt(4))))))
Run Code Online (Sandbox Code Playgroud)
如何将org.json4s.JsonAST.JValue上面给出的转换为com.fasterxml.jackson.databind.JsonNode?
为什么我想这样做:我想JValue使用优秀的json-schema-validator Java库来验证s对JSON Schema,它使用JsonNodes作为参数.
我正在寻找某种类似于Play Framework处理JsValue<> JsonNodeinterop的东西.
我理解在Haskell中,最重要的是将最"变量"的参数(也就是输入对象)放在函数定义的最后,以使函数尽可能可组合(引用).但是,如果我使用的库函数不遵循此规则,那么函数组合是否有任何替代/解决方法来提高可读性?
我将给出一个具体的例子 - subRegex函数将输入字符串作为两个参数中的第一个,因此链接其中两个加上a toUpper来创建一个"slugify"函数我最终得到了以下结果:
slugify :: FilePath -> FilePath
slugify old =
let (dir, file) = splitFileName old
in combine dir $ subRegex (mkRegex "[ _]") (subRegex (mkRegex "[^.a-z0-9_ ]+") (map toLower file) "") "-"
Run Code Online (Sandbox Code Playgroud)
考虑到subRegex参数的顺序,是否有一种函数组合式的方式来整理它?
在Scala中,我通过Scala清单抓取给定类的类型并存储它.我的问题是,如何检查该类型以查看原始类是来自一个父类还是另一个类?
t: Class[MyParentClass]由于类型擦除,我看起来无法执行模式匹配,如下所示:
trait Product
trait PerishableProduct extends Product
class Fridge extends Product
class Banana extends PerishableProduct
def getProductType[P <: Product](implicit manifestP: Manifest[P]): Class[P] =
manifestP.erasure.asInstanceOf[Class[P]]
val isPerishable = getProductType[Fridge] match {
case x: Class[PerishableProduct] => true
case _ => false
}
// ^^ warning: non variable type-argument PerishableProduct in type pattern
// Class[PerishableProduct] is unchecked since it is eliminated by erasure
Run Code Online (Sandbox Code Playgroud)
我还缺少另一种技巧吗?
我在Scala中使用JAX-RS并尝试将调用参数化为:
val jc = JAXBContext.newInstance(classOf[MyClassName])
Run Code Online (Sandbox Code Playgroud)
我按照这里的答案一直在使用ClassManifests,但还有一些我还在努力的事情.作为背景,我的JAX-RS表示都扩展了一个存根的Representation类:
class Representation {}
class ExampleRepresentation extends Representation { ... }
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经使用ClassManifest定义了我的函数,如下所示:
def get[R: ClassManifest](representation: R): String = {
val jc = JAXBContext.newInstance(classManifest[R].erasure)
...
}
Run Code Online (Sandbox Code Playgroud)
我的第一个问题有点愚蠢:如何调用此函数?我无法弄清楚传入什么来获取R类型和表示值的get()(原始问题的接受答案并未明确).我根据范例的注释尝试了隐式类型,但是下面会生成编译错误:
get(PlatformRepresentation)
Compiling main sources...
not found: value PlatformRepresentation
Run Code Online (Sandbox Code Playgroud)
我的第二个问题是:是否可以在R对象上应用上限类型?换句话说,我知道:
R <: Representation
Run Code Online (Sandbox Code Playgroud)
有没有办法在get()的ClassManifest类型声明中绑定它?
非常感谢!