我有一个有2条记录的集合aTable:
{
"title" : "record 1",
"fields" : [
{
"_id" : 1,
"items" : [
1
]
},
{
"_id" : 2,
"items" : [
2,3,4
]
},
{
"_id" : 3,
"items" : [
5
]
}
]
},
{
"title" : "record 2",
"fields" : [
{
"_id" : 4,
"items" : [
7,8,9,10
]
},
{
"_id" : 5,
"items" : [
]
},
{
"_id" : 6,
"items" : [
11,12
]
} …Run Code Online (Sandbox Code Playgroud) import math
x = int(input("Enter a value for x: "))
y = int(input("Enter a value for y: "))
if y == 1 or y == x:
print(1)
if y > x:
print(0)
else:
a = math.factorial(x)
b = math.factorial(y)
div = a // (b*(x-y))
print(div)
Run Code Online (Sandbox Code Playgroud)
这个二项式系数程序可以工作但是当我输入两个相同的数字时,它应该等于1,或者当y大于x时它应该等于0.如果有人可以帮助我,程序需要稍微调整一下
是否有更多的自动方式在Scala中打开资源并将方法应用于此方法(直接从java转换),使用__CODE__但也包括finally等.
var is: FileInputStream = null
try {
is = new FileInputStream(in)
func(is)
} catch {
case e: IOException =>
println("Error: could not open file.")
println(" -> " + e)
exit(1)
} finally {
if(is) is.close()
}
Run Code Online (Sandbox Code Playgroud) scala.collection.Map从其他馆藏构建,我经常发现自己写作:
val map = Map(foo.map(x=>(x, f(x)))
Run Code Online (Sandbox Code Playgroud)
但是,由于Map.apply只接受变量参数,因此这不起作用- 所以我必须写:
val map = Map(foo.map(x=>(x, f(x)) toSeq :_*)
Run Code Online (Sandbox Code Playgroud)
得到我想要的东西,但这看起来很痛苦.有没有比Map从Iterable元组构造一个更漂亮的方法?
我试图按小时聚合MongoDB colloection中的记录,并需要将存储为timestamp(毫秒)的日期转换为ISODate,以便我可以使用聚合框架的内置日期运算符($ hour,$ month等)
记录存储为
{
"data" : { "UserId" : "abc", "ProjId" : "xyz"},
"time" : NumberLong("1395140780706"),
"_id" : ObjectId("532828ac338ed9c33aa8eca7")
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用以下类型的聚合查询:
db.events.aggregate(
{
$match : {
"time" : { $gte : 1395186209804, $lte : 1395192902825 }
}
},
{
$project : {
_id : "$_id",
dt : {$concat : (Date("$time")).toString()} // need to project as ISODate
}
},
// process records further in $project or $group clause
)
Run Code Online (Sandbox Code Playgroud)
产生以下形式的结果:
{
"result" : [
{
"_id" : ObjectId("5328da21fd207d9c3567d3ec"),
"dt" …Run Code Online (Sandbox Code Playgroud) 我如何将a转换scala.math.BigDecimal为java.math.BigDecimal?
我想知道在哪些情况下哪些数据结构最适合使用"包含"或"存在"检查.
我问,因为我来自Python背景,并习惯于使用if x in something:表达式.例如,哪些表达式评估最快:
val m = Map(1 -> 1, 2 -> 2, 3 -> 3, 4 -> 4)
//> m : scala.collection.immutable.Map[Int,Int] = Map(1 -> 1, 2 -> 2, 3 -> 3, 4
//| -> 4)
val l = List(1,2,3,4) //> l : List[Int] = List(1, 2, 3, 4)
val v = Vector(1,2,3,4) //> v : scala.collection.immutable.Vector[Int] = Vector(1, 2, 3, 4)
m.exists(_._1 == 3) //> res0: Boolean = true
m.contains(3) //> res1: Boolean = true …Run Code Online (Sandbox Code Playgroud) 作为将Java代码转换为Scala代码的努力的一部分,我需要将Java流转换Files.walk(Paths.get(ROOT))为Scala.我无法通过谷歌搜索找到解决方案.asScala不会这样做.任何提示?
以下是相关代码:
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Collectors;
....
Files.walk(Paths.get(ROOT))
.filter(path -> !path.equals(Paths.get(ROOT)))
.map(path -> Paths.get(ROOT).relativize(path))
.map(path -> linkTo(methodOn(FileUploadController.class).getFile(path.toString())).withRel(path.toString()))
.collect(Collectors.toList()))
Run Code Online (Sandbox Code Playgroud)
Files.walk(Paths.get(ROOT))返回类型是Java中的Stream.
请耐心等待,我对斯卡拉来说还是很吵.我有以下代码:
private lazy val keys: List[String] = obj.getKeys().asScala.toList
Run Code Online (Sandbox Code Playgroud)
obj.getKeys返回一个java.util.Iterator
根据文档通过JavaConverers(导入)调用asScala ..
java.util.Iterator <==> scala.collection.Iterator
Run Code Online (Sandbox Code Playgroud)
scala.collection.Iterator定义
def toList: List[A]
Run Code Online (Sandbox Code Playgroud)
基于此,我认为这应该可行,但这里是编译错误.
[scalac] <file>.scala:11: error: type mismatch;
[scalac] found : List[?0] where type ?0
[scalac] required: List[String]
[scalac] private lazy val keys : List[String] = obj.getKeys().asScala.toList
[scalac] one error found
Run Code Online (Sandbox Code Playgroud)
我理解类型参数或java Iterator是一个Java字符串,我试图创建一个Scala字符串列表,但(或许天真地)认为会有一个隐式转换.
对于我的一个集合,它必须保持unix时间戳而不是isodate,我通常将时间戳转换为新的Date(unix_timestamp).
现在我需要new Date(ts)聚合.(示例是在PHP中)
'$ project'=> array('day'=>'$ new Date(ts)',...
'$ group'=> array("_ id"=> array('day'=>'$ day)',...),...
没有到达结果.结果中的字段"日"完全丢失.
如何在聚合中转换?
scala ×6
mongodb ×3
javascript ×2
bigdecimal ×1
java-8 ×1
mongo-shell ×1
performance ×1
python ×1
python-3.x ×1