小编And*_*imm的帖子

Ruby中And/&&的运算符优先级

我对Ruby中的和/ &&/=关键字有疑问.

ruby文档说,所提到的关键字的优先级是:(1)&&,(2)=,(3)和.

我写了这段代码:

def f(n) 
 n
end

if a = f(2) and  b = f(4) then  
    puts "1) #{a} #{b}" 
 end

if a = f(2) &&  b = f(4) then   
    puts "2) #{a} #{b}"     
end
Run Code Online (Sandbox Code Playgroud)

输出是:

1)2 4 [预期]

2)4 4 [ 为什么?]

出于某种原因,使用&&会导致a和b评估为4?

ruby and-operator

14
推荐指数
2
解决办法
5266
查看次数

Ruby:将proc转换为lambda?

是否有可能将proc风味的Proc转换为lambda风味的Proc?

有点惊讶,这不起作用,至少在1.9.2:

my_proc = proc {|x| x}
my_lambda = lambda &p
my_lambda.lambda? # => false!
Run Code Online (Sandbox Code Playgroud)

ruby lambda proc-object

14
推荐指数
3
解决办法
4037
查看次数

对于ruby中的最后一个索引,是否有等效的Array#find_index?

Array#find_index 允许您查找第一个项目的索引

  • 等于object或,或
  • 使一个块传递给它评估为true

Array#rindex可以允许你找到最后一个等于a的项的索引object,但有没有什么可以让你找到最后一个项传递给它的索引返回true?

否则,我应该做些什么

last_index = array.length - 1 - array.reverse.find_index{|item| item.is_wanted?}
Run Code Online (Sandbox Code Playgroud)

ruby arrays

14
推荐指数
1
解决办法
1万
查看次数

如何避免在RSpec中"无用地使用== in void context"?

在RSpec中,如果我有警告并且有

x.should == 42
another_line_of_code
Run Code Online (Sandbox Code Playgroud)

然后我收到警告

warning: useless use of == in void context
Run Code Online (Sandbox Code Playgroud)

有什么我可以做的除外

  1. 关闭警告
  2. 将其更改为 bitbucket = (x.should == 42)

ruby warnings rspec

14
推荐指数
3
解决办法
7412
查看次数

Enumerator :: Yielder#yield方法何时有用?

这个问题提到了这个Enumerator::Yielder#yield方法.我之前没有使用它,我想知道在什么情况下它会有用.

当您想要创建无限的项目列表(例如Eratosthenes的Sieve)以及何时需要使用外部迭代器时,它是否主要有用?

ruby yield enumerable

14
推荐指数
1
解决办法
2641
查看次数

如何使用lib minitest或Test:Unit对单元测试进行着色?

我希望在我的开发环境中有单元测试输出颜色.但是,我无法在Linux(Debian和Ubuntu)上运行它.当我包含以下库时:

require 'minitest/autorun'
require 'minitest/unit'
require 'minitest/pride'
Run Code Online (Sandbox Code Playgroud)

我明白了:

/usr/local/rvm/gems/ruby-1.9.2-p136/gems/minitest-2.3.1/lib/minitest/pride.rb:35:in `<top (required)>': undefined method `output' for MiniTest::Unit:Class (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

由代码引起:

MiniTest::Unit.output = PrideIO.new(MiniTest::Unit.output)
Run Code Online (Sandbox Code Playgroud)

我见过一个有效的Rspec变种.不幸的是,我的Ruby知识还不足以看出差异.

ruby testunit minitest

14
推荐指数
3
解决办法
1万
查看次数

rack-mini-profiler正在显示分析静态文件

我看着它的railscast(http://railscasts.com/episodes/368-miniprofiler)之后我正在使用rack-mini-profiler .

我把它添加到我的Gemfile中:

gem 'rack-mini-profiler'
Run Code Online (Sandbox Code Playgroud)

使用bundler安装它并使用"rails s"启动我的开发环境.profilling工作,它显示在网页的左上角,但它恰好分析所有静态文件(js,css,图像等).它似乎也有10行限制,因此隐藏了实际请求.

在此输入图像描述

在此输入图像描述

是否可以配置它以避免分析静态文件?

ruby profiling rack ruby-on-rails rack-mini-profiler

14
推荐指数
1
解决办法
1721
查看次数

如何在Ruby on Rails中删除散列中的重复项?

我有这样的哈希:

[
  {
    :lname => "Brown",
    :email => "james@intuit.com",
    :fname => "James"
  },
  {
    :lname => nil,
    :email => "brad@intuit.com",
    :fname => nil
  },
  {
    :lname => "Smith",
    :email => "brad@intuit.com",
    :fname => "Brad"
  },
  {
    :lname => nil,
    :email => "brad@intuit.com",
    :fname => nil
  },
  {
    :lname => "Smith",
    :email => "brad@intuit.com",
    :fname => "Brad"
  },
  {
    :lname => nil,
    :email => "brad@intuit.com",
    :fname => nil
  }
]
Run Code Online (Sandbox Code Playgroud)

我想学习如何删除记录是否重复.意思是,看看有几个"brad@intuit.com"如何删除重复的记录,意味着删除所有其他有电子邮件"brad@intuit.com"的人....将电子邮件作为密钥而不是其他字段?

ruby ruby-on-rails ruby-on-rails-3

13
推荐指数
3
解决办法
1万
查看次数

如何在Perl中以编程方式发现Win32 :: OLE对象的属性和方法?

使用Perl,使用Win32::OLE库加载COM/OLE对象并控制它们非常容易.我遇到的问题是确切地知道我正在访问的对象中有哪些方法和属性可用.其他语言中的某些OLE工具包可以通过读取对象上可用的所有属性和方法为您生成静态接口.Perl的Win32::OLE库中是否存在这样的工具?

com perl win32ole

13
推荐指数
1
解决办法
4746
查看次数

何时使用dup,何时在Ruby中使用clone?

Ruby的dup和clone方法有什么区别?描述dup和的行为的差异clone.但是什么时候应该使用dup,何时应该使用clone

实际项目的例子讨论了为什么他们使用dup而不是克隆,反之亦然,这对于这个问题来说是理想的.

或者,解释为什么存在两种不同的方法会有所帮助.这可能是指从红宝石的创造者,或类似的方法检查报表dup,并clone在影响Ruby等语言.

ruby clone idiomatic dup

13
推荐指数
2
解决办法
3287
查看次数