yur*_*ura 5 coding-style scala
例如,我想通过一些字段值过滤对象.我可以写
objects.filter{ o =>
val set = Set(c1,c2)
set contains o.field
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我会在每次调用方法时创建hashset ==>它会很慢
我也可以这样写
val set = Set(c1,c2)
objects.filter{ o =>
set contains o.field
}
Run Code Online (Sandbox Code Playgroud)
它会很快工作,但我用无意义的物体污染了我的空间set
.
做这个的最好方式是什么?
Rog*_*ach 12
这似乎有效:
objects.filter {
val set = Set(c1,c2)
o => set contains o.field
}
Run Code Online (Sandbox Code Playgroud)
如果你将"Set(c1,c2)"分解为这样的def:
def getSet = { println("Set!"); Set(5,7)}
Run Code Online (Sandbox Code Playgroud)
您会看到只创建了一个集合.
只需在其周围放置大括号,名称空间就不再受到污染.
{
val set = Set(c1,c2)
objects.filter{ o =>
set contains o.field
}
}
Run Code Online (Sandbox Code Playgroud)
使用内部命名函数,它们有助于更好地构造代码并保持命名空间清洁.
def someMeaningfulName = {
val set = Set(c1,c2)
objects.filter{ o =>
set contains o.field
}
}
Run Code Online (Sandbox Code Playgroud)