我最近开始学习Scala并且遇到了currying.从这篇文章中的答案,这段代码片段
def sum(a: Int)(b: Int) = a + b
Run Code Online (Sandbox Code Playgroud)
扩展到这个
def sum(a: Int): Int => Int = b => a + b
Run Code Online (Sandbox Code Playgroud)
然后我看到scala-lang的一个片段,它显示可以写这样的东西来模拟一个while循环
def whileLoop (cond : => Boolean) (body : => Unit) : Unit = {
if (cond) {
body
whileLoop (cond) (body)
}
}
Run Code Online (Sandbox Code Playgroud)
出于好奇,我试图扩展它,并得到了这个
def whileLoop2 (cond : => Boolean) : (Unit => Unit) =
(body : => Unit) =>
if (cond) {
body
whileLoop2 (cond) (body)
}
Run Code Online (Sandbox Code Playgroud)
但是我似乎缺少一些语法,因为我收到错误
error: identifier expected but …Run Code Online (Sandbox Code Playgroud) 我正在使用AWS Ruby SDK v2来访问几个区域中的各种存储桶.是否有可能在我访问之前确定每个存储桶的(运行时)区域,因此我可以避免下面的错误,如果我使用错误的区域配置AWS S3客户端,我会得到这个错误?
您尝试访问的存储区必须使用指定的端点进行寻址.请将以后的所有请求发送到此端点.
我知道我可以使用下面的命令并解析响应,但理想情况下,我希望保留在Ruby SDK中.
aws s3api get-bucket-location
在试验密封特性时,我发现(令我惊讶的是)如果在一个文件中,我有这个代码
sealed trait Sealed trait SealedChild extends Sealed
在另一个文件中,我有
trait SealedGrandchild extends SealedChild
编译代码成功.
为什么SealedGranchild即使它在另一个文件中有密封的祖先类型也可以定义?除了明确声明SealedChild为sealed,有没有办法防止SealedChild扩展到定义它的文件之外?