小编Kev*_*ith的帖子

将Scala中的所有BufferedReader行读入字符串

我怎样才能读取所有一中BufferedReader的线,并存储为一个字符串?

 val br = new BufferedReader(...)
 val str: String = getAllLines(br) // getAllLines() -- is where I need help
Run Code Online (Sandbox Code Playgroud)

与此问题类似.

scala bufferedreader

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

为什么Int不实现'Monoid'?

鉴于Maybe Int,我试着mappend自己.

$let x = Just 55 :: Maybe Int

$mappend x x

<interactive>:126:1:
    No instance for (Monoid Int) arising from a use of `mappend'
    In the expression: mappend x x
    In an equation for `it': it = mappend x x
Run Code Online (Sandbox Code Playgroud)

看着Maybe,我看到:

Monoid a => Monoid(也许是a)

由于Int没有实现Monoid类型类,这就解释了为什么我不能使用mappendMaybe Int.

但是,我记得LYAH我可以使用Sum:

ghci> let x = Sum 55
ghci> mappend x x
Sum {getSum = …
Run Code Online (Sandbox Code Playgroud)

haskell

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

了解sprintf(...)的危险

OWASP说:

"诸如strcpy(),strcat(),sprintf()和vsprintf()之类的C库函数对空终止字符串进行操作,并且不执行边界检查."

sprintf将格式化数据写入字符串int sprintf(char*str,const char*format,...);

例:

sprintf(str, "%s", message); // assume declaration and 
                             // initialization of variables
Run Code Online (Sandbox Code Playgroud)

如果我理解OWASP的评论,那么使用sprintf的危险就是那样

1)如果消息的长度> str的长度,则存在缓冲区溢出

2)如果消息没有以null结尾\0,则消息可能被复制到超出消息内存地址的str,导致缓冲区溢出

请确认/否认.谢谢

c++ printf

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

SBT中非穷举匹配使编译失败

让我们说我有一个特点,父母,有一个孩子,孩子.

scala> sealed trait Parent
defined trait Parent

scala> case object Boy extends Parent
defined module Boy
Run Code Online (Sandbox Code Playgroud)

我写了一个函数,模式匹配密封的特征.我的f功能是完全的,因为只有一个Parent实例.

scala> def f(p: Parent): Boolean = p match { 
     |   case Boy => true
     | }
f: (p: Parent)Boolean
Run Code Online (Sandbox Code Playgroud)

然后,2个月后,我决定添加一个Girl孩子Parent.

scala> case object Girl extends Parent
defined module Girl
Run Code Online (Sandbox Code Playgroud)

然后重新编写f方法,因为我们正在使用REPL.

scala> def f(p: Parent): Boolean = p match { 
     |   case Boy => true
     | }
<console>:10: warning: match may …
Run Code Online (Sandbox Code Playgroud)

scala pattern-matching sbt

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

获得任何一个的价值

除了使用之外match,是否有类似于选项的方式来getOrElse实现Right或者Left值的实际内容?

scala> val x: Either[String,Int] = Right(5)
scala> val a: String = x match { 
                                case Right(x) => x.toString
                                case Left(x) => "left" 
                       }
a: String = 5
Run Code Online (Sandbox Code Playgroud)

scala either

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

理解`andThen`

我遇到过andThen,但没有正确理解它.

为了进一步研究,我阅读了Function1.andThen 文档.

def andThen[A](g: (R) ? A): (T1) ? A
Run Code Online (Sandbox Code Playgroud)

mm是一个MultiMap实例.

scala> mm
res29: scala.collection.mutable.HashMap[Int,scala.collection.mutable.Set[String]] with scala.collection.mutable.MultiMap[Int,String] = 
                    Map(2 -> Set(b) , 1 -> Set(c, a))

scala> mm.keys.toList.sortWith(_ < _).map(mm.andThen(_.toList))
res26: List[List[String]] = List(List(c, a), List(b))

scala> mm.keys.toList.sortWith(_ < _).map(x => mm.apply(x).toList)
res27: List[List[String]] = List(List(c, a), List(b))
Run Code Online (Sandbox Code Playgroud)

注 - 来自行动中的DSL的代码

andThen强大的?基于这个例子,看起来像mm.andThen去糖x => mm.apply(x).如果有更深刻的含义andThen,那么我还没有理解它.

scala function-composition

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

Maven - 无法执行JAR

在构建了一个示例mvn项目之后,我添加了我的org.restlet依赖项和Java代码.

然后,我成功构建了我的JAR mvn install.最后,我在尝试运行JAR时遇到了错误.

vagrant$ java -jar target/my-app-1.0-SNAPSHOT.jar 
Failed to load Main-Class manifest attribute from
target/my-app-1.0-SNAPSHOT.jar
Run Code Online (Sandbox Code Playgroud)

java jar manifest maven

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

返回HTTP错误401代码和跳过筛选链

使用自定义Spring Security过滤器,如果HTTP标头不包含特定的键值对,我想返回HTTP 401错误代码.

例:

public void doFilter(ServletRequest req, ServletResponse res,
                     FilterChain chain) throws IOException, ServletException {

   HttpServletRequest request = (HttpServletRequest) req;
   final String val = request.getHeader(FOO_TOKEN)

   if(val == null || !val.equals("FOO")) {
       // token is not valid, return an HTTP 401 error code
       ...
   }
   else {
    // token is good, let it proceed
    chain.doFilter(req, res);
   }
Run Code Online (Sandbox Code Playgroud)

据我了解,我可以做以下事情:

(1)((HttpServletResponse) res).setStatus(401)并跳过剩余的过滤链

要么

(2)抛出异常,最终导致Spring Security向客户端抛出401错误.

如果#1是更好的选择,如何在调用setStatus(401)响应后跳过过滤器链?

或者,如果#2是正确的方法,我应该抛出哪个例外?

spring-security

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

foldLeft v.collyRight - 这有关系吗?

以前,Nicolas Rinaudo回答了我关于Scala 列表的问题foldRight总是使用foldLeft?

目前正在研究Haskell,我的理解是,在(prepend)可以使用(append)的情况下foldRight应该优先考虑.foldLeft::++

据我所知,原因是性能 - 前者发生在O(1),即在前面添加一个项目 - 恒定时间.而后者需要O(N),即遍历整个列表并添加项目.

在Scala中,因为foldLeft是在以下方面实现的foldRight,不使用的好处:+++foldRight连问题,因为foldRight被逆转,然后foldLeft'd

例如,考虑这个简单的fold..操作,只需按顺序返回列表的元素.

foldLeft折叠每个元素,将每个项目添加到列表中:+.

scala> List("foo", "bar").foldLeft(List[String]()) { 
                                                    (acc, elem) => acc :+ elem }
res9: List[String] = List(foo, bar)
Run Code Online (Sandbox Code Playgroud)

foldRight::在每个项目上使用运算符执行foldLeft ,然后反转.

scala> List("foo", "bar").foldRight(List[String]()) { 
                                                    (elem, acc) => elem :: acc }
res10: List[String] = List(foo, bar)
Run Code Online (Sandbox Code Playgroud)

实际上,在Scala中哪个foldLeft …

haskell scala

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

意外的特质行为

给出一个简单的代数数据类型Parent:

scala> sealed trait Parent
defined trait Parent

scala> case object Boy extends Parent
defined object Boy

scala> case object Girl extends Parent
defined object Girl
Run Code Online (Sandbox Code Playgroud)

我定义了一个特征:

scala> trait HasGirl { 
     |   val x: Girl.type
     | }
defined trait HasGirl
Run Code Online (Sandbox Code Playgroud)

然后,我创建了一个实现的case类HasGirl,但提供了一个xBoy.type.

scala> case class Thing(x: Boy.type) extends HasGirl
defined class Thing
Run Code Online (Sandbox Code Playgroud)

我曾预料到编译时错误,因为我没有看到x类型是如何Boy.type符合的val x: Girl.type.

这里发生了什么?

scala traits

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