Tag: 备忘录

使用rails演示者 – 记忆在3.1中被弃用 – 使用|| =而不是?

问题:尽可能避免创建多个对象或多个查询。 我正在使用带有rails的Presenters作为最佳实践。 我遵循的建议说,使用“扩展ActiveSupport.Memoizable”(然后使用memoize:方法来使用它们)比使用@the_record = record ||= @record样式设置项目@the_record = record ||= @record几个问题 – false或nil没有被存储,所以查询再次被调用,而memoizable更好地使用缓存(即使用它!)。 但是我看到memoizable在rails 3.1中被弃用了。我在webwave下使用github并使用语句:“DEPRECATION WARNING:不推荐使用ActiveSupport :: Memoizable,将来的版本中将删除它,只需使用Ruby memoization模式。(来自extend at /Users/kain/.rvm/gems/ruby-1.9.3-preview1/bundler/gems/carrierwave-c4459179b0f8/lib/carrierwave/mount.rb:284″ 。 也许它已经解决了? 谁知道? 关于今后使用的最佳做法的任何建议? 使用|| =语法? 上述问题怎么样?

Word解析器脚本和实现memoization

描述 给定一个字典,我的程序生成两个输出文件,’sequences.txt’和’words.txt’。 ‘sequences’包含四个字母(Az)的每个序列,它们恰好出现在字典的一个单词中,每行一个序列。 ‘words’将包含包含序列的相应单词,顺序相同,每行一次。 例如,给定spec/fixtures/sample_words.txt字典仅包含 arrows carrots give me 产出应该是: ‘sequences’ ‘words’ carr carrots give give rots carrots rows arrows rrot carrots rrow arrows 当然,’arro’不会出现在输出中,因为它出现在多个单词中。 到目前为止我想出了什么 项目结构: ├── Gemfile ├── Gemfile.lock ├── examples │ └── dictionary.txt ├── lib │ └── word_sequence_parser.rb ├── main.rb ├── output ├── readme.md └── spec ├── fixtures │ └── sample_words.txt └── […]

Ruby条件赋值和私有方法

从下面的代码中可以看出, ||=运算符是从类外部进行评估的。 class Foo attr_reader :bar def baz self.bar ||= ‘baz’ end private attr_writer :bar end puts Foo.new.baz # => in `baz’: private method `bar=’ called for # (NoMethodError) 引用关于官方扩展的接受答案|| =条件赋值运算符 : In other words, the expansion c = c || 3 is (excluding bugs like in pre-1.9) correct. 将baz方法重写为self.bar = self.bar || ‘baz’ self.bar […]

在Ruby中,我应该使用|| =还是定义? 记忆?

if defined?我应该使用if defined? return @current_user_session if defined?(@current_user_session) @current_user_session = UserSession.find 或者||= @current_user_session ||= UserSession.find 我注意到if defined? 最近使用的方法越来越多。 一个人对另一个人有什么好处吗? 就个人而言,我更喜欢||=的可读性。 我还认为Rails可能有一个memoize宏,它可以透明地提供这种行为。 是这样的吗?