Tag: 序列

字符串的未定义方法`serializable_hash’

我正在以下列方式尝试to_json @own_events.as_json(:include => {:created_date => {},:attendees => {}, :user => {}, :start_times => {}, :end_times =>{}} ) 和created_date是这样的方法 def created_date self.created_at.strftime(‘%d/%m/%Y %H:%M:%S’) end 因为我需要没有TZD的created_at ..但是有一个错误 NoMethodError(未定义的方法`serializable_hash’代表“14/04/2014 16:04:07”:String):

Ruby计数字符序列不使用正则表达式

在计算序列中的字符时需要有关此代码的帮助。 这就是我要的: word(“aaabbcbbaaa”) == [[“a”, 3], [“b”, 2], [“c”, 1], [“b”, 2], [“a”, 3]] word(“aaaaaaaaaa”) == [[“a”, 10]] word(“”) == [] 这是我的代码: def word(str) words=str.split(“”) count = Hash.new(0) words.map {|char| count[char] +=1 } return count end 我得到了一句话(“aaabbcbbaaa”)=> [[“a”,6],[“b”,4],[“c”,1]],这不是我想要的。 我想计算每个序列。 我更喜欢没有正则表达式的解决方案。 谢谢。

Ruby相当于C#的’yield’关键字,或创建序列而不预先分配内存

在C#中,你可以这样做: public IEnumerable GetItems() { for (int i=0; i<10000000; i++) { yield return i; } } 这将返回一个包含1000万个整数的可枚举序列,而无需在该长度的内存中分配集合。 有没有办法在Ruby中做同等的事情? 我想要处理的具体示例是将矩形数组展平为要枚举的值序列。 返回值不必是Array或Set ,而是某种只能按顺序迭代/枚举的序列,而不是索引。 因此,不需要在存储器中同时分配整个序列。 在.NET中,这是IEnumerable和IEnumerable 。 在Ruby世界中使用的术语的任何澄清都会有所帮助,因为我更熟悉.NET术语。 编辑 也许我原来的问题还不够清楚 – 我认为在C#和Ruby中, yield含义差别很大,这就引起了混乱。 我不想要一个需要我的方法来使用块的解决方案。 我想要一个具有实际返回值的解决方案。 返回值允许方便地处理序列(过滤,投影,连接,压缩等)。 这是一个如何使用get_items的简单示例: things = obj.get_items.select { |i| !i.thing.nil? }.map { |i| i.thing } 在C#中,任何返回使用yield return返回的IEnumerable方法都会导致编译器在幕后生成满足此行为的有限状态机。 我怀疑使用Ruby的延续可以实现类似的东西,但我还没有看到一个例子,我自己也不清楚如何做到这一点。 确实有可能使用Enumerable来实现这一目标。 一个简单的解决方案是给我们一个Array (包括模块Enumerable ),但我不想在内存中创建一个包含N个项目的中间集合,因为它可以只是懒得提供它们并且完全避免任何内存峰值。 如果这仍然没有意义,那么请考虑上面的代码示例。 get_items返回一个枚举,在该枚举上调用select 。 […]