小编Hen*_*son的帖子

为什么Scala中的模式匹配不适用于变量?

采取以下功能:

def fMatch(s: String) = {
    s match {
        case "a" => println("It was a")
        case _ => println("It was something else")
    }
}
Run Code Online (Sandbox Code Playgroud)

这种模式很好地匹配:

scala> fMatch("a")
It was a

scala> fMatch("b")
It was something else
Run Code Online (Sandbox Code Playgroud)

我希望能做的是以下内容:

def mMatch(s: String) = {
    val target: String = "a"
    s match {
        case target => println("It was" + target)
        case _ => println("It was something else")
        }
}
Run Code Online (Sandbox Code Playgroud)

这会发出以下错误:

fMatch: (s: String)Unit
<console>:12: error: unreachable code
               case _ => println("It was something …
Run Code Online (Sandbox Code Playgroud)

scala pattern-matching match

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

Twitter Bootstrap中的<hr>标签无法正常运行?

这是我的代码:

<div class="container">
<div>
<h1>Welcome TeamName1</h1>
  asdf
  <hr>
  asdf

</div>
</div> <!-- /container -->
Run Code Online (Sandbox Code Playgroud)

hr标签似乎不像我期望的那样工作.它不是画线,而是创造一个间隙,如下所示:

在此输入图像描述

twitter-bootstrap

89
推荐指数
5
解决办法
37万
查看次数

如何在Scala中使用可变集合

我想我可能无法理解可变集合的工作原理.我希望通过将map应用于它们或添加新元素来影响可变集合,但是:

scala> val s: collection.mutable.Seq[Int] = collection.mutable.Seq(1)
s: scala.collection.mutable.Seq[Int] = ArrayBuffer(1)

scala> s :+ 2 //appended an element
res32: scala.collection.mutable.Seq[Int] = ArrayBuffer(1, 2)

scala> s //the original collection is unchanged
res33: scala.collection.mutable.Seq[Int] = ArrayBuffer(1)

scala> s.map(_.toString) //mapped a function to it
res34: scala.collection.mutable.Seq[java.lang.String] = ArrayBuffer(1)

scala> s //original is unchanged
res35: scala.collection.mutable.Seq[Int] = ArrayBuffer(1)

//maybe mapping a function that changes the type of the collection shouldn't work
//try Int => Int

scala> s.map(_ + 1)
res36: scala.collection.mutable.Seq[Int] = ArrayBuffer(2)

scala> …
Run Code Online (Sandbox Code Playgroud)

collections scala mutable

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

是否有类似于Haskell的$(美元符号)的Scala运算符?

有没有办法在Scala中强制运算符优先级,就像在Haskell中使用$一样?

例如,在Haskell中,您有:

a b c = ((a b) c)
Run Code Online (Sandbox Code Playgroud)

a $ b c = a (b c)
Run Code Online (Sandbox Code Playgroud)

在Scala中有类似的方法吗?我知道Scala本身没有运算符,但有没有办法实现类似的效果?

scala operators

19
推荐指数
3
解决办法
2067
查看次数

如何使用Scala在Play!2中提供上传的文件?

我正在尝试允许用户将照片上传到服务器然后查看它们.按照本指南中的说明进行上传.这是代码:

def upload = Action(parse.multipartFormData) { request =>
  request.body.file("picture").map { picture =>
    import java.io.File
    val filename = picture.filename 
    val contentType = picture.contentType
    picture.ref.moveTo(new File("/tmp/picture"))
    Ok("File uploaded")
  }.getOrElse {
    Redirect(routes.Application.index).flashing(
      "error" -> "Missing file"
    )
  }
}
Run Code Online (Sandbox Code Playgroud)

我不清楚如何将上传的图像提供给想要查看它们的用户.现在我在自己的机器上托管服务器,因此指南中的代码片段将文件写入我的D:驱动器,这不是(也不应该)从Internet上获得.据我所知,有两种选择:

  1. 将照片存储在我的项目中的/ public文件夹下(专用于资产的文件夹).见这里:http://www.playframework.org/documentation/2.0/Assets

  2. 编写我自己的控制器,从我的驱动器中提供自定义位置的图像.

对于1,我不确定这是否是资产的目的.对于2,我不知道如何编写这样的控制器.

scala playframework playframework-2.0

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

Scala,currying和超载

说你有以下内容:

foo(x: String)(y: Int): Int
foo(x: String)(y: Double): Int
Run Code Online (Sandbox Code Playgroud)

Scala不允许这样的表达.据我所知,其原因是foo("asdf")没有明确定义的类型(它是Int => Int或Double => Int).

是否有理由不允许这种"多型"功能?

types scala currying

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

Scala中的案例类,模式匹配和curried构造函数

他们似乎没有很好地混合:

abstract class A
case class B (var a: Int)(var b: String) extends A
case class C extends A
Run Code Online (Sandbox Code Playgroud)

以下内容不起作用:

B(1)("1") match {
  case B(a)(b) => print("B")
  case C() => print("C")
}
Run Code Online (Sandbox Code Playgroud)

问题是模式匹配和curried参数似乎不起作用.有解决办法吗?

scala currying pattern-matching case-class

14
推荐指数
2
解决办法
3243
查看次数

没有Heroku的永久文件系统?

我目前在Heroku上托管的应用程序允许用户提交照片.最初,我正在考虑将这些照片存储在文件系统中,因为将它们存储在数据库中显然是不好的做法.

然而,似乎Heroku上没有永久文件系统,只是一个短暂的文件系统.这是真的,如果是这样,我在存储照片和其他文件方面有哪些选择?

heroku

13
推荐指数
2
解决办法
5558
查看次数

如何构建独立的scala可执行文件

我试图从我已经开始的scala项目创建一个独立的.exe文件(或类似的东西).我需要以这样的方式创建它,使用应用程序的人必须尽可能少地工作(双击安装程序或只是.exe文件).我有什么选择?

executable scala build

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

Scala中奇怪的输入错误

看看这个:

scala> class Container(val rows: Iterable[Iterable[Option[Any]]]) {} 
defined class Container

scala> val row1 = Array(Some("test"),Some(1234))
row1: Array[Some[Any]] = Array(Some(test), Some(1234))

scala> val row2 = Array(Some("test2"), Some(12345))
row2: Array[Some[Any]] = Array(Some(test2), Some(12345))

scala> val listtest = List(row1, row2)
listtest: List[Array[Some[Any]]] = List(Array(Some(test), Some(1234)), Array(Some(test2), Some(12345)))

scala> val test = new Container(listtest)
<console>:11: error: type mismatch;
 found   : List[Array[Some[Any]]]
 required: Iterable[Iterable[Option[Any]]]
       val test = new Container(listtest)
                                ^

scala> val test = new Container(List(row1,row2))
test: Container= Container@600a08
Run Code Online (Sandbox Code Playgroud)

如何定义Container的第二种方式,但第一种方式不适用?这些类型不一样吗?

types scala

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