我想弄清楚注入方法是如何工作的
有人可以解释一下吗
def mysort
if djeca.any?
djeca.order(name: :asc).inject([]) { |sum, c| sum += c.mysort}.uniq
else
[self]
end
mysort
是模型类Books
在控制器中我调用方法mysort:
@mybooks= Books.find_by(name: 'renesansa')
@mybookss= @mybooks.leaf_wms
答案 0 :(得分:0)
您应该点击此链接https://samurails.com/tips/ruby-ruby-on-rails-inject/
例如:
0
此处,流程从3
索引开始到1 & 2
索引。第一次注入添加sum
以获取两个值的总和并存储在sum
变量(即sum = 3)中,然后它取10
值并将其加3,以获得结果(即sum = 6)等等。最后,您将获得Calendar myCalendar = Calendar.getInstance();
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL, Locale.FRANCE);
Log.d("Time",dateFormat.format(myCalendar.getTime()));
。
答案 1 :(得分:0)
sum = []
djeca.order(name: :asc).each{|c| sum = sum + c.mysort}
sum.uniq
相当于
djeca.order(name: :asc).map{|c| c.mysort}.flatten.uniq
添加数组实际上是concatening,因此您的代码只需将所有c.mysort附加到数组中。
如果我理解正确,你也可以写:
(1..10).inject(0){|mem,i| mem += i}
#=> 55
(1..10).inject(0){|mem,i| mem + i}
#=> 55
根据您的受众群体,您可能想要写一个或另一个。 请注意,您不需要在注入块中为sum赋值,它会自动完成。
let users = [{
name: "abcd"
}, {
name: "xyz"
}, {
name: "temp"
}];
class Example extends React.Component {
constructor(props) {
super(props);
this.state = {
activeIndex: 0
};
}
tick =() => {
let activeIndex = this.state.activeIndex;
if (activeIndex == this.props.users.length -1){
activeIndex = 0;
} else {
activeIndex++;
}
this.setState({
activeIndex
});
}
render() {
return (
< ul className = "list-group" >
< li className = "list-group-item" >
{this.props.users[this.state.activeIndex].name}
< button className = "btn btn-default" onClick={this.tick} >
show Next
< /button>
</li >
< /ul>
);
}
}
ReactDOM.render(
< Example users = {users}/ > ,
document.getElementById('test')
);
答案 2 :(得分:0)
djeca.order(姓名:: asc)
检索活动记录数组
.inject([])
循环播放每条活动记录。 inject的初始输出是空数组[]。
{| sum,c | }
c - 每个活动记录
sum - 注入输出值。最初是[]。在每次迭代时,该值将附加到数组。 (总和+ = [某些值] )