小编uzi*_*lan的帖子

如何在需要层次结构时使用案例类?

我知道你不允许从案例类继承,但是你真的需要的时候会怎么做?我们在层次结构中有两个类,它们都包含许多字段,我们需要能够创建两个类的实例.这是我的选择:

  • 如果我让超类成为通常的类而不是case类 - 我会失去所有的case类优点,比如toString,equals,hashCode方法等.
  • 如果我把它作为一个案例类,我就打破了不继承case案例的规则.
  • 如果我在子类中使用组合 - 我必须编写许多方法并将它们重定向到另一个类 - 这意味着很多工作并且会感觉非Scalaish.

我该怎么办?这不是一个常见的问题吗?

scala case-class

15
推荐指数
2
解决办法
4336
查看次数

如何标记方法必须?

假设你创建一个使用生成器模式的人一个类名,并假设生成器类包含的方法body(),head(),arms()当然build(),你考虑的方法head(),并build()为这个类的用户必须的.

我们想以某种方式标记这些方法是强制性的,如果可能的话使用注释.如果这个类的用户试图构建一个Person实例但是忘了调用这些方法中的任何一个,我们希望得到某种警告 - 无论是来自java编译器,还是来自我们用来构建我们的Eclipse或Maven项目 - 他们中的任何一个都可以.

有可能吗?你会建议哪种方式?

java annotations design-patterns builder

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

哪个Scala框架用于测试REST服务?

我想使用Spec2和Scala来测试使用Java构建的REST服务.我看了一下Spray但它接缝就像你必须使用Spray构建你的应用程序才能使用SprayTest测试它.我也找到了这个帖子,但它并不是我想要的.

还有其他想法吗?

rest unit-testing scala

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

如何使用Kotlin何时查找字符串是否为数字?

我想when()在Kotlin中使用一个表达式来从函数中返回不同的值.输入是a String,但它可能是可解析的Int,所以我想Int在可能的情况下返回解析,或者String如果不是,则返回.由于输入是一个String我不能使用是类型检查表达式.

有没有惯用的方法来实现这一目标?

编辑:我的问题是when()表达式应该是什么样子,而不是关于返回类型.

kotlin

7
推荐指数
4
解决办法
7952
查看次数

凌乱的REST注释

在我的项目中,我们使用RestEasy创建REST接口,并使用Swagger来记录它们.问题是这需要许多注释,可能如下所示:

@ApiOperation(value = "Create a person object",
        notes = "Create a person object" +
                "Return the newley created person object",
        response = Person.class)
@ApiResponses({
        @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = "Internal server error"),
        @ApiResponse(code = HttpStatus.SC_UNAUTHORIZED, message = "Unauthorized"),
        @ApiResponse(code = HttpStatus.SC_PRECONDITION_FAILED, message = "Precondition failed"),
        @ApiResponse(code = HttpStatus.SC_BAD_REQUEST, message = "Bad request"),
        @ApiResponse(code = HttpStatus.SC_UNPROCESSABLE_ENTITY, message = "Unprocessable entity")
})
@POST
@Path("rest/v1/persons")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
Person createPerson(
        @HeaderParam("SecurityToken") String token,
        @ApiParam(value = "person", defaultValue = "{ \"name\": …
Run Code Online (Sandbox Code Playgroud)

java rest annotations resteasy swagger

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

创建Vaadin-sbt项目

我想用sbt 0.11.0创建一个Vaadin项目.我查看了sbt-vaadin-pluginvaadin-skeleton,但它们似乎都已过时了.那么,有没有人提供如何配置这样一个项目的技巧?

scala vaadin sbt

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

如何检索Mongodb集合中的所有对象,包括ids?

我正在使用CasbahSalat来创建我自己的Mongodb dao并且正在实现这样的getAll方法:

val dao: SalatDAO[T, ObjectId]    
def getAll(): List[T] = dao.find(ref = MongoDBObject()).toList 
Run Code Online (Sandbox Code Playgroud)

我想知道的是:

  1. 有没有更好的方法来检索所有对象?
  2. 当我遍历对象时,我找不到对象的_id.被排除在外吗?如何将其包含在列表中?

scala mongodb casbah salat

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

如何在找到正确的三角形时使用Haskells懒惰

我正在http://learnyouahaskell.com/starting-out上关注(优秀的)Haskell教程,并尝试使用正确的三角形示例:

> let triangles = [(a,b,c) | c <- [1..10], b <- [1..10], a <- [1..10], a^2 + b^2 == c^2]
Run Code Online (Sandbox Code Playgroud)

按照预期运行我得到的:

> triangles 
[(4,3,5),(3,4,5),(8,6,10),(6,8,10)]
Run Code Online (Sandbox Code Playgroud)

现在,我想尝试使用无限列表:

> let triangles = [(a,b,c) | c <- [1..], b <- [1..], a <- [1..], a^2 + b^2 == c^2] 
Run Code Online (Sandbox Code Playgroud)

但是当我尝试它时,像:

> take 2 triangles
Run Code Online (Sandbox Code Playgroud)

...程序只运行并运行,没有输出.我究竟做错了什么?我认为Haskells懒惰会导致它找到两个第一个三角形然后停止?

haskell lazy-evaluation

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

如何在Java 8中创建漂亮的迭代

Adam Bien的博客启发,我想用Java 8将Java 7中的常见迭代替换为更好的迭代.旧代码如下所示:

void repeatUsingJava7(int times) {
    for (int i = 0; i < times; i++) {
        doStuff();
        doMoreStuff();
        doEvenMoreStuff();
    }
}
Run Code Online (Sandbox Code Playgroud)

......这不太好.所以我用Adam Bein的例子替换它:

void repeatUsingJava8(int times) {
    IntStream.range(0, times).forEach(
        i -> {
            doStuff();
            doMoreStuff();
            doEvenMoreStuff();
        }
    );
}
Run Code Online (Sandbox Code Playgroud)

...这是朝着正确方向迈出的一步,但不会使代码更易于阅读,还会引入一个不需要的变量i,以及一对额外的花括号.所以现在我想知道是否有其他方法来编写这个代码,这将使它更好,更容易阅读,主要是使用Java 8.

java iteration java-8

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

在Zeppelin jdbc解释器中使用日期选择器

我的Zeppelin笔记本中有一组图表,可以使用jdbc插入器在一段时间内从数据库中获取数据。我想做的是能够选择一个适用于所有图表的时期。

我看到有人可以使用动态表单甚至使用Angular的日期选择器来创建输入字段(这会更好)。是否有可能以某种方式在jdbc插入器中使用所选时间段?

在“ 应用Zeppelin动态表单”中给出的示例中,我可以看到如何在一个图表中完成此操作,但这不是我想要的:能够定义一个会影响所有图表的字段。

apache-zeppelin

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

在Goland安装库的快捷方式

我按照https://golang.org/doc/code.html#Library中的说明操作并尝试使用Goland.虽然我找不到快速安装我正在编写的库的方法,但我很惊讶.根据教程,您应该使用install在pkg或bin文件夹中安装代码,但除了在控制台中编写代码之外,我无法在Goland中找到这样做的方法.我错过了什么?

go goland

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

阻止Heroku运行npm start +运行什么?

免责声明:我是node.js/grunt/bower新手.

我有一个node.js/grunt/bower应用程序,我正在尝试在Heroku上部署.Heroku按预期构建应用程序,但随后它尝试运行"npm start",我没有在package.json文件中指定.这个命令失败了,我猜是因为它不是服务器应用程序,我看不到在Heroku上部署的实际应用程序.我的应用程序可以在这里找到:https://github.com/uzilan/sufusku

那么 - 我如何让Heroku不要运行"npm start"命令,它应该运行什么呢?运行grunt构建后,应用程序在dist文件夹中可用.

的package.json:

{
    "name": "sufusku",
    "version": "0.0.1",
    "description": "Sufusku - makes your annoying sudoku easier",
    "repository": {
        "type": "git",
        "url": "git://github.com/uzilan/sufusku.git"
    },
    "license": "(MIT OR Apache-2.0)",
    "dependencies": {
        "bower": "^1.4.1",
        "grunt": "0.4.5",
        "grunt-cli": "0.1.13",
        "grunt-contrib-clean": "^0.6.0",
        "grunt-contrib-concat": "^0.5.1",
        "grunt-contrib-connect": "^0.11.2",
        "grunt-contrib-copy": "^0.8.0",
        "grunt-contrib-cssmin": "^0.13.0",
        "grunt-contrib-htmlmin": "^0.4.0",
        "grunt-contrib-uglify": "^0.9.1",
        "grunt-contrib-watch": "^0.6.1",
        "grunt-ng-annotate": "^1.0.1",
        "load-grunt-config": "^0.17.2",
        "time-grunt": "^1.2.1"
    },
    "devDependencies": {},
    "engines": {
        "node": ">=0.8.0"
    },
    "scripts": {
        "postinstall": "./node_modules/bower/bin/bower install && grunt …
Run Code Online (Sandbox Code Playgroud)

heroku node.js gruntjs bower

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

如何创建具有不同子项目的通用SBT根项目

我正在Exercism中的Scala轨道上工作,这意味着我在根文件夹中有很多SBT项目。我想创建一个根SBT项目,该项目将在我下载新练习时自动添加新的子项目。目前,我必须手动添加它们,因此我的根目录build.sbt如下所示:

lazy val root = (project in file("."))
    .aggregate(
        hello_world,
        sum_of_multiples,
        robot_name)

lazy val hello_world = project in file("hello-world")
lazy val sum_of_multiples = project in file("sum-of-multiples")
lazy val robot_name = project in file("robot-name")
Run Code Online (Sandbox Code Playgroud)

...但是我想避免必须手动添加每个项目。有没有办法自动添加新项目?

scala sbt

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