小编Saw*_*yer的帖子

为什么人们在Scala中的另一个对象中定义类,特征,对象?

好的,我会解释为什么我会问这个问题.这几天我开始阅读Lift 2.2源代码.如果您之前正好读过电梯源代码,那就太好了.

在Lift中,我发现,定义内部类和内部特征的使用非常频繁.

对象菜单有2个内部特征和4个内部类.对象Loc有18个内部类,5个内部特征,7个内部对象.

有很多代码写得像这样.我想知道为什么作者这样写.

  • 是因为这是作者的个人品味还是语言功能的强大运用?
  • 对于这种用法有任何权衡吗?

scala lift

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

如何在Haskell中将资源编译为二进制文件?

假设我有一个dictionary.txt文件,我需要将其读入地图并在我的程序中使用它,如何将这个dictionary.txt文件包含在已编译的exe文件中?

static haskell constants precompiled

25
推荐指数
4
解决办法
2184
查看次数

在休眠标准中计数(*)?

我有一个搜索条件的组合,通过使用休眠标准实现.我添加了这样的分页:

criteria.setFirstResult(offset).setMaxResults(pageSize).setFetchSize(pageSize).list();
Run Code Online (Sandbox Code Playgroud)

这对于分页是不够的,所以我计算了总结果大小.

totalResult = (Integer)criteria.setProjection(Projections.rowCount()).uniqueResult();
Run Code Online (Sandbox Code Playgroud)

问题是,我第一次提交搜索表单时,得到了正确的totalResult.当我单击下一页,并且偏移量发生变化时,我在第二个语句处得到了NullPointExcetion.我不知道为什么.并且通过调试,我可以看到当发生此异常时,第一个语句成功返回分页结果.

所以我想问一下,第一个声明与第二个声明冲突吗?(因为第一个语句将fetchsize设置为10,我想知道count(*)函数是否能正常工作.它们是使用相同条件的不同任务,如何克隆或复制已经添加了许多限制的一个条件?)

hibernate

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

shell排序的最快差距序列?

根据Marcin Ciura的最佳(最着名的)shell排序算法的增量序列,shellsort的最佳序列是1,4,10,23,57,132,301,701 ......,但是如何生成这样的序列?在Marcin Ciura的论文中,他说:

Knuth和Hibbard的序列都相对较差,因为它们是由简单的线性递归定义的.

但我发现的大多数算法书都倾向于使用Knuth的序列:k = 3k + 1,因为它很容易生成.你生成一个弹壳序列的方法是什么?

sorting algorithm performance shellsort

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

Scala中的右箭头意义

在Scala编程的第9章中,有一个这样的示例方法:

def twice(op: Double => Double, x: Double) = op(op(x))
Run Code Online (Sandbox Code Playgroud)

作者在书中说:

此示例中的op类型为Double => Double,这意味着它是一个函数,它将一个Double作为参数并返回另一个Double.

我不明白这里的"Double => Doulbe"是什么,在前面的章节中,"=>"只表示函数文字,而且从未写过这样的"Type => Type",因为根据scala函数文字语法定义函数体的右边部分是函数体,函数体怎么能"双"?

scala

20
推荐指数
2
解决办法
2万
查看次数

我应该使用"非Javadoc"评论吗?

我实现了自己在接口中定义的方法.但是,当我尝试将Javadoc添加到此方法时,Eclipse给了我这样的注释:

/* (non-Javadoc)
 * @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent)
 */
Run Code Online (Sandbox Code Playgroud)

实际上,我真的需要为这个方法添加一些注释.我该怎么办?

java javadoc

20
推荐指数
2
解决办法
9196
查看次数

我怎样才能在for-comprehension中做'if..else'?

我问的是一个让我最近困惑的基本问题.我想编写一个Scala For表达式来执行以下操作:

for (i <- expr1) {
  if (i.method) {
    for (j <- i) {
      if (j.method) {
        doSomething()
      } else {
        doSomethingElseA()
      }
    }
  } else {
    doSomethingElseB()
  }
}
Run Code Online (Sandbox Code Playgroud)

问题是,在多个生成器For表达式中,我不知道我可以在哪里放置表达式主体.

for {i <- expr1
  if(i.method) // where can I write the else logic ?
  j <- i 
  if (j.method)
} doSomething()
Run Code Online (Sandbox Code Playgroud)

如何在Scala Style中重写代码?

scala for-comprehension

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

Scala编码风格和约定?

我认为Scala与简单性相差太远,就像它的语法一样.例如Martin Odersky在他的书中写了这个方法:

def calculate(s: String): Int =
  if (cache.contains(s))
    cache(s)
  else {
    val acc = new ChecksumAccumulator
    for (c <- s)
      acc.add(c.toByte)
    val cs = acc.checksum()
    cache += (s -> cs)
    cs
  }
Run Code Online (Sandbox Code Playgroud)

如果方法增长,读取代码变得非常痛苦,我无法匹配花括号,无法在IDE中折叠方法.那里有Scala编码约定吗?我觉得表达一个简单的方法太灵活了:

def add(b: Byte): Unit = {
  sum += b
}

def add(b: Byte): Unit = sum += b

def add(b: Byte) { sum += b }
Run Code Online (Sandbox Code Playgroud)

scala

17
推荐指数
3
解决办法
9451
查看次数

DAO模式的最佳实践?

我见过很多代码都使用了service-dao模式,我不知道这个模式的来源.它强制执行前层调用服务,然后将一些服务任务委托给dao.

我想问一下 :

  1. DAO层是否完全与数据访问相关的任务?异常封装之类的东西怎么样?
  2. 有没有其他模式可以用来代替这个或者比这更好?
  3. 我认为pojo域模型和事务脚本使得即使是简单的问题变得复杂,是否有可能完全消除dao层?

architecture dao design-patterns domain-driven-design

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

如何让css选择器排除一个元素?

例如,我有一个像这样的CSS样式:

    input.validation-passed {border: 1px solid #00CC00; color : #000;}
Run Code Online (Sandbox Code Playgroud)

我使用的javascript验证框架将为每个输入标签注入一个class ="validation-passed".对于像<input type='text' />......这样的元素,这没关系,但是<input type='button' />,我想这不应用,我应该怎么做?

html javascript css

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