采取以下功能:
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) 这是我的代码:
<div class="container">
<div>
<h1>Welcome TeamName1</h1>
asdf
<hr>
asdf
</div>
</div> <!-- /container -->
Run Code Online (Sandbox Code Playgroud)
hr标签似乎不像我期望的那样工作.它不是画线,而是创造一个间隙,如下所示:
我想我可能无法理解可变集合的工作原理.我希望通过将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) 有没有办法在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本身没有运算符,但有没有办法实现类似的效果?
我正在尝试允许用户将照片上传到服务器然后查看它们.按照本指南中的说明进行上传.这是代码:
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上获得.据我所知,有两种选择:
将照片存储在我的项目中的/ public文件夹下(专用于资产的文件夹).见这里:http://www.playframework.org/documentation/2.0/Assets
编写我自己的控制器,从我的驱动器中提供自定义位置的图像.
对于1,我不确定这是否是资产的目的.对于2,我不知道如何编写这样的控制器.
说你有以下内容:
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).
是否有理由不允许这种"多型"功能?
他们似乎没有很好地混合:
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参数似乎不起作用.有解决办法吗?
我目前在Heroku上托管的应用程序允许用户提交照片.最初,我正在考虑将这些照片存储在文件系统中,因为将它们存储在数据库中显然是不好的做法.
然而,似乎Heroku上没有永久文件系统,只是一个短暂的文件系统.这是真的,如果是这样,我在存储照片和其他文件方面有哪些选择?
我试图从我已经开始的scala项目创建一个独立的.exe文件(或类似的东西).我需要以这样的方式创建它,使用应用程序的人必须尽可能少地工作(双击安装程序或只是.exe文件).我有什么选择?
看看这个:
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的第二种方式,但第一种方式不适用?这些类型不一样吗?
scala ×8
currying ×2
types ×2
build ×1
case-class ×1
collections ×1
executable ×1
heroku ×1
match ×1
mutable ×1
operators ×1