小编mde*_*ich的帖子

在伴侣对象在类中时使用.tupled方法

我正在从Slick迁移到Slick 2,在Slick 2中你想tupled在投影到案例类时使用该方法(如http://slick.typesafe.com/doc/2.0.0-所示)RC1/migration.html)

问题是当case类有一个伴随对象时,即如果你有这样的东西

case class Person(firstName:String,lastName:String) {

}
Run Code Online (Sandbox Code Playgroud)

与伴侣对象一起

object Person {
  def something = "rawr"
}
Run Code Online (Sandbox Code Playgroud)

在相同的范围内,该tupled方法不再有效,因为它试图运行tupledobject,而不是,case class.

有没有一种方法来检索case classPerson,而不是object,所以你可以调用tupled正确?

singleton scala case-class slick

39
推荐指数
3
解决办法
8478
查看次数

光滑3.1 - 从DBIOAction打印SQL(插入语句)

在Slick 3.1中,通过完全重新设计新API,在执行插入时似乎无法查看生成的SQL语句.

如果你有类似的东西

val action = DBIO.seq(
  SomeTables ++= Seq(TableData(1,"First"),TableData(2,"Second"))
)
Run Code Online (Sandbox Code Playgroud)

看起来你实际上看不到生成的SQL action.该result方法实际上并不存在,如果您不使用,则仅使用statementsprint的变体?代替实际值DBIO.seq,如果您使用DBIO.seqstatements方法实际上并不存在.

即使使用诸如.transactionally或之类的方法.withPinnedSession,它似乎没有什么区别(但我不知道这应该如何帮助).

从所有方法的观察来看,这似乎是不可能的?

sql scala slick

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

在不同类型的案例类之间安全地复制字段

假设您有类似以下的案例类

case class Test1(a:String,b:Int,c:Char)

case class Test2(a:String,b:Int)
Run Code Online (Sandbox Code Playgroud)

并使用以下变量实例化类

val test1 = Test1("first",2,'3')

val test2 = Test2("1st",20)
Run Code Online (Sandbox Code Playgroud)

有没有办法使用该.copy方法(或其他方法),将Test2中的变量应用于Test1,如

val test3 = test1.copy(test2) //Note this isn't valid scala code
// Result should be ("1st",20,'3')
Run Code Online (Sandbox Code Playgroud)

如果在纯scala中这是不可能的,那么它将如何在Shapeless 1/2中完成(当前代码在Shapeless 1中,但我们计划在某个时间点升级到Shapeless 2)

scala generic-programming case-class shapeless

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

使用通用派生与记录Haskell

我基本上试图看看我是否可以在Haskell中模拟一个ORM框架,这样如果用户想要创建一个数据库模型,他们会做这样的事情

data Car = Car {
        company :: String, 
        model :: String, 
        year :: Int
        } deriving (Model)
Run Code Online (Sandbox Code Playgroud)

表格为"Car",列为公司,型号,年份

要在Haskell中执行此操作,您必须使用类和泛型的组合,这就是我遇到困难的地方.使用本教程(http://www.haskell.org/ghc/docs/7.4.1/html/users_guide/generic-programming.html),我想出了这个(基本上是复制和重命名,所以我可以得到代码工作)

{-# LANGUAGE DeriveGeneric, TypeOperators, TypeSynonymInstances, FlexibleInstances #-}

module Main where
import GHC.Generics

class SModel b where
        s_new :: b -> IO()

instance SModel Int where
        s_new s = putStrLn s++":Int"

instance SModel Integer where
        s_new s = putStrLn s++":Integer"

instance SModel String where
        s_new s = putStrLn s++":String"    

class Model m where
        new :: m a -> IO() …
Run Code Online (Sandbox Code Playgroud)

generics haskell record deriving

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

Slick 2 - 更新表中的列并返回整个表对象

在使用光滑时,如何在返回整个更新的表时更新表格表中的几列?

假设SomeTables是某些TableQuery,如果你想要,例如,在表中添加一个项目(并返回新添加的项目),通常会编写这样的查询

val returnedItem = SomeTables returning SomeTables += someTable
Run Code Online (Sandbox Code Playgroud)

如果你想更新一个项目并将整个项目返回整个项目,你会怎么做?我怀疑你会做这样的事情

val q = SomeTables.filter(_.id === id).map(x => (x.someColumn,x.anotherColumn)) returning SomeTables
val returnedItem = q.update((3,"test"))
Run Code Online (Sandbox Code Playgroud)

但是以下代码不起作用,我看不到任何关于如何执行此操作的文档

请注意,我知道您可以事先查询该项目,更新它,然后在原始对象上使用copy,但这需要大量的样板(以及数据库跳转)

sql scala slick

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

创建包含 SBT 项目+子项目中所有测试的程序集 jar

我有一个有趣的问题,我基本上需要创建一个.jar(加上所有的类路径依赖项),其中包含一个 SBT 项目(加上它的任何子项目)的所有测试。这个想法是我可以只使用运行 jarjava -jar并且所有测试都将执行。

我听说这可能与 sbt-assembly 有关,但您必须手动运行您拥有assembly的每个 sbt 子项目(每个子项目都有自己的.jars),理想情况下,我只想运行一个命令,.jar为您碰巧拥有的每个 sbt root+sub 项目中的每个测试(以同样的方式,如果您test在带有子项目的 sbt 项目中运行,它将为所有内容运行测试)。

我们当前使用的测试框架是 specs2,但我不确定这是否有所不同。

有谁知道这是否可能?

scala sbt specs2 sbt-assembly sbt-native-packager

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

光滑2.10-RC1,Scala 2.11.x,绕过22个arity限制与案例类(异类)

case class假设您有以下代码,我在将具有> 22列的表专门映射到a时遇到问题

import slick.driver.PostgresDriver
import scala.slick.collection.heterogenous._
import syntax._
import shapeless.Generic

case class TwentyThreeCaseClass(
    val id:Option[Long],
    val one:String,
    val two:String,
    val three:String,
    val four:String,
    val five:String,
    val six:String,
    val seven:String,
    val eight:String,
    val nine:String,
    val ten:String,
    val eleven:String,
    val twelve:String,
    val thirteen:String,
    val fourteen:String,
    val fifteen:String,
    val sixteen:String,
    val seventeen:String,
    val eighteen:String,
    val nineteen:String,
    val twenty:String,
    val twentyOne:String,
    val twentyTwo:String,
    val twentyThree:String,
    val twentyFour:String
)

class TwentyThreeTable(tag:Tag) extends Table[TwentyThreeCaseClass](tag,"twenty_three_table") {
    def id = column[Long]("id",O.PrimaryKey,O.AutoInc)
    def one = column[String]("one")
    def …
Run Code Online (Sandbox Code Playgroud)

scala case-class shapeless slick

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

AppCode 3.1的cocapods上没有自动完成功能

我最近从一个带有cocoapods安装的基础XCode项目中设置了一个项目,当将项目导入AppCode 3.1时,我没有得到通过CocoaPods安装的swift框架的任何自动完成功能.

这是我的Podfile

# Uncomment this line to define a global platform for your project
platform :osx, '10.10'
use_frameworks!

target 'Main' do
    pod "SwiftyJSON", ">= 2.1.3"
    pod 'BrightFutures', '~> 1.0.0-beta.3'
end

target 'MainTests' do

end
Run Code Online (Sandbox Code Playgroud)

如您所见,我定义了2个pod(一个是SwiftyJson,一个是BrightFutures).这两个pod都安装为Swift Frameworks(因此为什么use_frameworks!).

所有东西似乎都被导入并且正常用于AppCode(我有两个项目,一个是主项目,另一个是Pods,它与XCode中的完全相同),但似乎AppCode没有索引任何Pod框架,所以我根本没有获得使用这些框架的自动完成状态.例如,在以下代码中

import Cocoa
import BrightFutures

@NSApplicationMain

class AppDelegate: NSObject, NSApplicationDelegate {



    func applicationDidFinishLaunching(aNotification: NSNotification) {

        let f = future { 5 }.map{f in f + 7}

        f.onSuccess{callback in println(callback)}
        // Insert code here to initialize your application
    }

    func applicationWillTerminate(aNotification: NSNotification) …
Run Code Online (Sandbox Code Playgroud)

autocomplete ios appcode cocoapods swift

5
推荐指数
0
解决办法
935
查看次数

对象内未初始化的字段

我目前正在修复一个非常奇怪的错误,即private final val在访问对象字段之前没有对其进行初始化。代码的位置可以在https://github.com/mdedetrich/soda-time/blob/master/jvm/src/main/scala/org/joda/time/chrono/GregorianChronology.scala#L12-L33找到.

您可以通过拉取上述 repo 然后运行sodatimeJVM/console然后在控制台中运行 `import org.joda.time._;来模拟这个错误;DateTime.now().minusDays(10)

代码已经贴在这里

object GregorianChronology {

  private final val MILLIS_PER_YEAR = (365.2425 * DateTimeConstants.MILLIS_PER_DAY).toLong
  private final val MILLIS_PER_MONTH = (365.2425 * DateTimeConstants.MILLIS_PER_DAY / 12).toLong
  private final val DAYS_0000_TO_1970 = 719527
  private final val MIN_YEAR = -292275054
  private final val MAX_YEAR = 292278993
  private final val INSTANCE_UTC = getInstance(DateTimeZone.UTC)

  private final val cCache = new ConcurrentHashMap[DateTimeZone, Array[GregorianChronology]]()

  def getInstanceUTC(): GregorianChronology = INSTANCE_UTC

  def getInstance(): GregorianChronology = getInstance(DateTimeZone.getDefault, 4)

  def …
Run Code Online (Sandbox Code Playgroud)

scala initialization lazy-evaluation

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

将验证从HList应用于案例类

在尝试使用应用程序仿函数进行验证时(Monad捕获多个异常(不仅仅是单个失败)),我在scalaz中遇到了一个禁止超过14个仿函数的硬限制,所以这里有一个有用的注释(https:// github .com/scalaz/scalaz/issues/504#issuecomment-23626237)导航我使用HLists而不是applicative functor

现在它工作得非常好(从此处手动输入此序列文件,因为它不在maven https://github.com/typelevel/shapeless-contrib/blob/master/scalaz/main/scala/sequence.scala?来源= c)

我的问题是,我知道这是可能的,你怎么会自动实例化case class Foo(i:Int,s:String)而不必手动匹配模式与案例,只是再次重新应用参数

基本上我想做这样的事情

  case class Foo(i:Int,s:String)

  implicit def TwoFoo = Iso.hlist(Foo.apply _, Foo.unapply _)

  val someFoo = sequence(
      1.successNel[Int] ::
      "2".successNel[String] ::
      HNil
  ).map { Foo.apply _} // Note this doesn't work

  someFoo match {
    case Success(a) => println(a)
    case Failure(a) => {
      println("failure")
      println(a)
    }
  }
Run Code Online (Sandbox Code Playgroud)

scala scalaz hlist shapeless

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

宏观依赖性出现在POM/JAR中

我有一个使用宏的scala项目,它基本上遵循这里描述的确切方法(http://www.scala-sbt.org/0.12.4/docs/Detailed-Topics/Macro-Projects.html),包括整个分发部分(所以本质上我有一个根项目,一个名为宏的子项目,用于保存正在使用的宏)

问题是,当我发布我的项目(现在使用publish-local),而另一个scala项目使用带有宏作为依赖项的项目时,它会尝试拉宏#macro_2.10; 0.1-SNAPSHOT因为它出现在POM.这导致项目无法编译,因为它无法解决依赖关系,即

> compile
[info] Updating {file:/Users/mdedetrich/silvermanwylie/waitress/}default-0e4b9d...
[info] Resolving macro#macro_2.10;0.1-SNAPSHOT ...
[warn]  module not found: macro#macro_2.10;0.1-SNAPSHOT
[warn] ==== local: tried
[warn]   /Users/mdedetrich/.ivy2/local/macro/macro_2.10/0.1-SNAPSHOT/ivys/ivy.xml
[warn] ==== public: tried
[warn]   http://repo1.maven.org/maven2/macro/macro_2.10/0.1-SNAPSHOT/macro_2.10-0.1-SNAPSHOT.pom
[info] Resolving org.slf4j#slf4j-api;1.6.4 ...
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: macro#macro_2.10;0.1-SNAPSHOT: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[trace] Stack trace suppressed: run last *:update for the full output.
[error] (*:update) sbt.ResolveException: unresolved dependency: macro#macro_2.10;0.1-SNAPSHOT: not found
[error] Total time: 0 s, completed Aug 23, 2013 8:15:56 …
Run Code Online (Sandbox Code Playgroud)

macros scala pom.xml sbt scala-macros

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