小编Ale*_*ean的帖子

在Avro中表示UUID的最佳方式?

我很想知道在Avro中编码一种非常特殊类型的数据的最佳实践:UUID.

uuid avro

4
推荐指数
2
解决办法
3333
查看次数

SBT程序集问题:找到String需要带有<< =语法的sbt.Task [String]

我是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)

sbt sbt-assembly

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

什么是PCALL或Wowwiki错了?

这是一个魔兽世界(魔兽世界)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)

lua world-of-warcraft

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

如何在表达式中途使用Haskell类型签名?

我正在使用这个优秀的教程作为基础在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)

我很难过 - 如何通过表达式表达类型签名,而不需要使用整个单独的函数?

haskell

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

我可以在Scala抽象方法上使用绑定类型然后"收紧"子类中的定义吗?

基本上我想做这样的事情:

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)

我已经在这个问题上看到了一些不同的想法,但是它们似乎都不适合这种情况 - 因为它们似乎不允许我在其他地方编写代码,这些代码 …

types scala

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

使用Clojure/Ring为二进制文件提供间歇性错误

我正在ClojureSnowplow构建一个事件收集器(使用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).重新启动服务器,它是相同的模式.

一些事情不是:

  1. 我已经复制了这个wget,以确认间歇性不是浏览器缓存问题
  2. "R01GOD..."在命令行(cat original.gif | base64)生成了base64字符串,所以知道那里没有问题
  3. 成功发送像素后,我已验证其内容是否正确(diff original.gif received-pixel.gif)

我是Clojure的新手 - 我的猜测是我的代码中有一些令人尴尬的动态gremlin,但我需要帮助发现它!

clojure ring

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

如何将json4s JValue转换为Jackson JsonNode?

如果我正在使用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的东西.

scala jackson json4s

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

函数组成时函数参数的顺序错误

我理解在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参数的顺序,是否有一种函数组合式的方式来整理它?

haskell

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

如何判断Scala reified类型是否扩展了某个父类?

在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)

我还缺少另一种技巧吗?

types scala

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

Scala classOf用于类型参数:如何调用函数以及如何使用上限类型限制

我在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类型声明中绑定它?

非常感谢!

scala

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

标签 统计

scala ×4

haskell ×2

types ×2

avro ×1

clojure ×1

jackson ×1

json4s ×1

lua ×1

ring ×1

sbt ×1

sbt-assembly ×1

uuid ×1

world-of-warcraft ×1