当我开始编写Scala时,我确实有一个很大的疑问.我想知道mapscala中的方法是如何工作的.是顺序处理还是多线程处理?更重要的是,我想知道为什么map方法比while或更快foreach?
val list = List(1,2,3,45,12)
list.map(x => x)
list.foreach(x => println(x))
Run Code Online (Sandbox Code Playgroud) 我正在研究Rails 3.2,我已经安装了Ransack用于搜索和Kaminari用于分页.这两颗宝石都非常流畅.
我很好奇如何在主页上进行搜索,在用户输入搜索输入后,将他重定向到另一个列出所有结果的页面.
与Zomato搜索类似的东西
截至目前,这是控制器代码:
def index
@search = Product.search(params[:q])
@products = @search.result.page(params[:page]).per(5)
end
Run Code Online (Sandbox Code Playgroud)
在我看来,我有:
= search_form_for @search do |f|
= f.label :locality_cont
= f.text_field :locality_cont
= f.submit
Run Code Online (Sandbox Code Playgroud) 我有一个关于用操作优先级AND和OR一个组成几个条件的问题.
所以,我需要生成以下SQL字符串以传递给where方法:
where("NOT ((assignments.to IS NOT NULL AND assignments.to < :start_date) OR assignments.from > :end_date)", start_date: date.at_beginning_of_week, end_date: date.at_end_of_week)
Run Code Online (Sandbox Code Playgroud)
我用Arel重写了它:
table = Assignment.arel_table
where(
table[:from].gt(date.at_end_of_week).
or(
table[:to].not_eq(nil).and(table[:to].lt(date.at_end_of_week))
).not
)
Run Code Online (Sandbox Code Playgroud)
但是Arel不会在条件周围放置括号AND,因此这个条件选择了错误的数据.如何在这种情况下放置括号?