forked from xorm/reverse
28 lines
597 B
Go
28 lines
597 B
Go
package underscore
|
|
|
|
import "reflect"
|
|
|
|
func (m enumerable) Find(predicate interface{}) IEnumerable {
|
|
iterator := m.GetEnumerator()
|
|
predicateRV := reflect.ValueOf(predicate)
|
|
for ok := iterator.MoveNext(); ok; ok = iterator.MoveNext() {
|
|
returnRVs := predicateRV.Call([]reflect.Value{
|
|
iterator.GetValue(),
|
|
iterator.GetKey(),
|
|
})
|
|
if returnRVs[0].Bool() {
|
|
return chainFromRV(
|
|
iterator.GetValue(),
|
|
)
|
|
}
|
|
}
|
|
|
|
return nilEnumerable
|
|
}
|
|
|
|
func (m enumerable) FindBy(dict map[string]interface{}) IEnumerable {
|
|
return m.Find(func(v, _ interface{}) bool {
|
|
return IsMatch(v, dict)
|
|
})
|
|
}
|