我有一个私有方法的伴侣对象,如下所示:
package com.example.people
class Person(val age: Int)
object Person {
private def transform(p: Person): Person = new Person(p.age + 1)
}
Run Code Online (Sandbox Code Playgroud)
我想测试这个方法,例如:
class PersonSpec extends FlatSpec {
"A Person" should "transform correctly" in {
val p1 = new Person(1)
val p2 = Person.transform(p1) // doesn't compile, because transform is private!
assert( p2 === new Person(2) )
}
}
Run Code Online (Sandbox Code Playgroud)
有关测试代码访问私有方法的任何帮助吗?
实际上,正如它所写,我可能能够创建一个子类Person,但如果Person被声明为final或sealed?
谢谢!
我有兴趣将一个流分成两个或多个子流,并以不同的方式处理这些元素.例如,(大)文本文件可能包含类型A的行和类型B的行,在这种情况下,我想要执行以下操作:
File.lines(path)
.filter(line -> isTypeA(line))
.forEachTrue(line -> processTypeA(line))
.forEachFalse(line -> processTypeB(line))
Run Code Online (Sandbox Code Playgroud)
以前是我试图抽象的情况.实际上我有一个非常大的文本文件,其中每一行都在测试正则表达式; 如果该行通过,则处理它,而如果它被拒绝,那么我想更新一个计数器.对拒绝字符串的进一步处理是我不仅仅使用的原因filter.
是否有任何合理的方法可以使用流来执行此操作,还是必须回退到循环?(我希望这也是并行运行,所以溪流是我的第一选择).
我有一个数据库模型Position(lat,lon),其中包含latitudes和longitudes.
我有一个控制器动作show_close_by,它以度数接收位置(my_lat, my_lon),公差(以公里为单位),并应返回数据库中位于公差范围内的位置列表.
为此,我使用hasrsine_distance公式计算两个坐标之间的公里(在地球表面上)的距离(lat1, lon1, lat2, lon2).
为了使查询更快,我在查询中编写了整个haversine_distance公式:
... WHERE 2*6371*asin(sqrt( power( sin( (:lat2-latitude)*pi()/(180*2) ) ,2) + cos(latitude*pi()/180)*cos(:lat2*pi()/180)*power(sin( (:lon2-longitude)*pi()/(180*2) ),2) )) < tolerance
Run Code Online (Sandbox Code Playgroud)
查询的细节无关紧要.我的疑问是:是否有必要为数据库中的每个位置计算这个巨大的函数?我可以使用更简单的功能过滤掉一些显然距离太远的位置吗?
好吧,我可以:使用嵌套的SQL查询,我可以在数据库中查询大"正方形"(在纬度/经度空间内)的位置,然后使用更昂贵的三角函数过滤那些位置.类似于以下内容:
SELECT * FROM ( SELECT * FROM Positions WHERE lat-latitude < some_reasonable_upper_bound AND lon-longitude < same_upper_bound ) WHERE costly_haversine_distance < tolerance
Run Code Online (Sandbox Code Playgroud)
最后,我的问题是:如何在Rails中实现这一点(不自己编写整个查询)?是否Positions.where(reasonable_upper_bound).where(costly_but_accurate_restriction)进行嵌套查询?如果没有,怎么样?
非常感谢!
我正在为组织编写rails应用程序.每个用户可能有一个或多个角色,并且只能根据这些角色访问某些控制器操作.
例如,只有管理员可以创建,销毁和更新Users的某些字段.此外,Team每个人都有一个团队负责人,只有团队负责人可以更新有关的某些信息Team(例如,成员列表).但是,首先Admins是指派团队领导者的人.
我的场景的具体细节并不重要,我只希望我描述了有许多不同角色和权限的情况.
我的问题是:使用什么宝石?我的第一个想法是CanCan,但最近一次提交是差不多一年前的事情,并没有提到Rails 4的兼容性.目前有替代方案吗?
我正在使用 Homebrew rbenv。brew doctor出来很好。rbenv install 2.0.0-p451给出以下错误消息:
user$ rbenv install 2.0.0-p451
Downloading ruby-2.0.0-p451.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/9227787a9636551f1749ee8394b5ffe5
Installing ruby-2.0.0-p451...
BUILD FAILED
Inspect or clean up the working tree at /var/folders/4h/ty8nj6c144b5cmhcrt0hd3cw0000gn/T/ruby-build.20140501101240.6245
Results logged to /var/folders/4h/ty8nj6c144b5cmhcrt0hd3cw0000gn/T/ruby-build.20140501101240.6245.log
Last 10 log lines:
ld: warning: directory not found for option '-L/usr/local/var/rbenv/versions/2.0.0-p451/lib'
installing default openssl libraries
1 warning generated.
linking shared-object date_core.bundle
ld: warning: directory not found for option '-L/usr/local/var/rbenv/versions/2.0.0-p451/lib'
linking shared-object openssl.bundle
ld: warning: directory not found for option '-L/usr/local/var/rbenv/versions/2.0.0-p451/lib'
linking shared-object ripper.bundle
ld: …Run Code Online (Sandbox Code Playgroud) 这个问题几乎是不言自明的.我有一个数据结构(我提到了一个HashMap但也可能是一个Set或一个List),我最初填充:
Map<String, String> map = new HashMap<String, String>();
for( something ) {
map.put( something );
}
Run Code Online (Sandbox Code Playgroud)
填充结构后,我永远不想添加或删除任何项目:
map.freeze();
Run Code Online (Sandbox Code Playgroud)
如何使用标准Java库实现这一目标?
我有一个内联ul,像这样:
<ul>
<li><span>...</span></li>
<li><span>...</span></li>
...
</ul>
Run Code Online (Sandbox Code Playgroud)
用ul { list-style-type: none; }和li { display: inline }.每个项目都是一个标签,最终产品看起来与StackOverflow在每个问题上的标签列表非常相似(<li>包含一些文本和一个图标).
我的问题是,当我有足够的物品到达线的末端时,最后一次<li>断裂,在当前线上留下一半,在下一行留下另一半.
怎么避免这个?
详细说明(我正在使用Bootstrap)):
<div class="col-lg-4">
<ul>
<li><span class="user_tag">User 1 <span class="glyphicon glyphicon-remove"></span></span></li>
<li><span class="user_tag">User 2 <span class="glyphicon glyphicon-remove"></span></span></li>
...
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
(注意Bootstrap span.glyphicon用适当的图标填充).至于样式(使用SASS语法):
ul {
list-style-type: none;
}
li {
display: inline;
.user_tag {
border: 1px solid #888888;
border-radius: 5px;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,在到达右边缘时<div>,最后一个用户被打破,将他的名字留在当前行上,并将字形留在下一行.