列表意图表达

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了列表意图表达相关的知识,希望对你有一定的参考价值。

  1. require 'active_support/binding_of_caller'
  2.  
  3. class Intention
  4. def initialize(value_expression, var, source)
  5. @value_expression = value_expression
  6. @var = var
  7. @source = source
  8. end
  9.  
  10. def to_a(predicates, binding)
  11. predicates << 'true' if predicates == []
  12. eval(<<-EOF, binding)
  13. #@source.select {|#@var| #{predicates.join('&&')} }.map do |#@var|
  14. #@value_expression
  15. end
  16. EOF
  17. end
  18. end
  19.  
  20. class String
  21. def |(other)
  22. raise unless other =~ /^(.+)<-(.+)$/
  23. Intention.new(self, $1, $2)
  24. end
  25. end
  26.  
  27. class I
  28. def self.[](intention, *predicates)
  29. raise unless intention.instance_of?(Intention)
  30. Binding.of_caller do |binding|
  31. intention.to_a(predicates, binding)
  32. end
  33. end
  34. end
  35.  
  36. =begin Example
  37. xs = [10,30,3,-5,1,10,100,-60]
  38. p I['(x*2).abs' | 'x<-xs', 'x < 50']
  39. #=> [20, 60, 6, 10, 2, 20, 120]
  40.  
  41. def quicksort(x = nil, *xs)
  42.   return [] if x == nil
  43.   quicksort(*I['y' | 'y <- xs', 'y < x']) + [x] + quicksort(*I['y' | 'y <- xs', 'y >= x'])
  44. end
  45. p quicksort(*xs)
  46. #=> [-60, -5, 1, 3, 10, 10, 30, 100]
  47. =end

以上是关于列表意图表达的主要内容,如果未能解决你的问题,请参考以下文章

数据结构—图邻接表存储基本运算算法图的遍历

使用数组列表、列表视图和意图的问题

我们可以在alexa意图中传递alexa序列号吗?

具有列表的发送意图具有列表

使用自定义列表视图时如何使用意图

我如何使用意图从列表视图转到下一个活动? [复制]