小编Doc*_*awk的帖子

跳过Enumerable#collect中的迭代

(1..4).collect do |x|
  next if x == 3
  x + 1
end # => [2, 3, nil, 5]
    # desired => [2, 3, 5]
Run Code Online (Sandbox Code Playgroud)

如果满足条件,nextcollect放入nil数组,而我正在尝试做的是,如果满足条件,则不在返回的数组中放置任何元素.这可能不调用delete_if { |x| x == nil }返回的数组吗?

(使用Ruby 1.8.7;我的代码摘录被大量抽象)

ruby enumerable

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

产生或返回Enumerator的ruby方法

在Ruby的最新版本中,许多方法在没有块的情况下被调用时Enumerable返回Enumerator:

[1,2,3,4].map 
#=> #<Enumerator: [1, 2, 3, 4]:map> 
[1,2,3,4].map { |x| x*2 }
#=> [2, 4, 6, 8] 
Run Code Online (Sandbox Code Playgroud)

我想在我自己的方法中做同样的事情,如下:

class Array
  def double(&block)
    # ???
  end
end

arr = [1,2,3,4]

puts "with block: yielding directly"
arr.double { |x| p x } 

puts "without block: returning Enumerator"
enum = arr.double
enum.each { |x| p x }
Run Code Online (Sandbox Code Playgroud)

ruby enumerable

29
推荐指数
2
解决办法
5782
查看次数

rake任务的新格式是什么?(任务:t,arg,:needs => [deps]与任务:t,[args] => [deps])

我正在使用Rails 3.1 beta和Ruby 1.9.2以及rake 0.9.2,并且我已经编写了一堆rake任务.这是一个例子:

namespace :data do
  desc "dump the nodes and edges for a graph"
  task :dump_graph, :species_id, :needs => :environment do |t,args|
    args.with_defaults(:species_id => 'Hs')
    # ...
  end
end
Run Code Online (Sandbox Code Playgroud)

但是,当我的rails应用程序加载这些rake任务时,我现在会为每个rake任务重复一次以下警告:

    at /home/user/railsapp/lib/tasks/data/dump_graph.rake:3:in `block in <top (required)>'
WARNING: 'task :t, arg, :needs => [deps]' is deprecated.  Please use 'task :t, [args] => [deps]' instead.
Run Code Online (Sandbox Code Playgroud)

我已经尝试过以几种不同的方式重新排列论据,但我不清楚我的任务应该是什么样子.

耙子是否希望我给出个人依赖?如果dep是rails环境,如何在rake任务中定义这些?

更新文档的链接将是一个可接受的答案!我用谷歌搜索和谷歌搜索,但没有运气.

(是的,我意识到格式是在错误消息中给出的.但根据我尝试过的变化,这种格式似乎不正确.)

rake ruby-on-rails-3.1

19
推荐指数
2
解决办法
5400
查看次数

各种增强ublas稀疏向量之间有什么区别?

boost::numeric::ublas,有三种稀疏矢量类型.

我可以看到它mapped_vector本质上是stl::map从索引到值,它将所有未找到的值视为0(或者是常见值).

但关于compressed_vector和的信息,文件很少(哈哈)coordinate_vector.

有人能够澄清吗?我试图弄清楚向各种向量添加项目的算法复杂性,以及两个这样的向量之间的点积.

一个非常有用的答案提供了compressed_vector与compressed_matrix非常相似.但似乎,例如,压缩行存储仅用于存储矩阵 - 而不仅仅是矢量.

我看到这unbounded_array是存储类型,但我也不太确定规范是什么.如果我创建一个大小为200,000,000但只有5个非零位置的compressed_vector,那么创建一个大小为10和非零位置的compressed_vector会不会有什么效率呢?

非常感谢!

c++ boost ublas data-structures

15
推荐指数
1
解决办法
2977
查看次数

词语产量的含义

目前我正在阅读David A. Black的"The Well-Grounded Rubyist",我坚持10.9章(枚举器和可枚举的下一个维度).我的问题是关于yield方法.yieldRuby上下文中单词的含义是什么?我的母语是俄语,谷歌翻译向我展示了一堆翻译变体,让我感到困惑.其中有一些:给予,带来,投降(放弃),生产,同意,遵守和许多其他人.

UPD:请注意这个事实,我试图理解Enumerator :: Yielder#yield方法的含义 ,但不是yield关键字本身.

UPD_2:我发现了有关枚举器的有趣文章:" Ruby中的懒惰枚举器 ".

ruby yield point enumerable

15
推荐指数
1
解决办法
5773
查看次数

Content-Type字符集是否未从HttpResponseMessage中公开?

我使用转换一些代码HttpWebRequestHttpClient.我遇到的一个问题是从内容类型响应头获取charset.

使用时HttpWebRequest,charset暴露在HttpWebResponse.CharacterSet属性中,就像这样

using (WebResponse response = await this.webRequest.GetResponseAsync())
{
     string characterSet = ((HttpWebResponse)response).CharacterSet;
Run Code Online (Sandbox Code Playgroud)

您也可以从WebResponse.ContentType属性或内容类型标题中获取它HttpWebResponse.Headers.

使用时HttpClient,ContentType标题中似乎缺少字符集.

这是我正在使用的代码HttpClient:

using (HttpClient httpClient = new HttpClient(httpClientHandler))
{
    using (HttpResponseMessage httpResponseMessage = await httpClient.GetAsync(uri, HttpCompletionOption.ResponseContentRead))
    {
        charset = httpResponseMessage.Content.Headers.ContentType.CharSet;
Run Code Online (Sandbox Code Playgroud)

CharSet属性始终是null. HttpResponseMessage有一个Headers属性,但它不包含content-type标头. HttpResponseMessage.Content还有一个Headers属性,它似乎包含内容类型标题,但该标题显示"Content-Type: text/html"- 它没有charset部分.

HttpWebResponse对于相同的url 使用第一种方法,我得到Content-Type标头的charset部分.我错过了什么吗?

c# content-type httpclient character-encoding

12
推荐指数
3
解决办法
9360
查看次数

将短列表合并为长向量的算法

我有一个稀疏矩阵类,它的非零和相应的列索引按行顺序存储在基本上类似STL-vector的容器中.他们可能有未使用的容量,如矢量; 要插入/删除元素,必须移动现有元素.

说我有手术insert_erase_replace,或ier简称.ier给定位置p,列索引j和值,可以执行以下操作v:

  • if v==0,ier删除条目p并左移所有后续条目.
  • 如果v!=0j已经存在的p,ier在替换单元格内容pv.
  • 如果v!=0,并且j不存在p,ier则在右移所有后续条目后插入条目v和列索引.jp

所以这一切都是微不足道的.

现在让我说我有ier2,它做了同样的事情,除了它采用包含多个列索引j和相应值的列表v.它还有一个大小n,表示列表中存在多少个索引/值对.但由于向量仅存储非零,有时实际插入大小小于n.

仍然微不足道.

但现在让我说我有ier3,不仅仅是一个列表ier2,而是多个列表.这表示编辑稀疏矩阵的切片.

在某些时候,迭代遍历向量,逐个复制它们并ier2在我们到达每个插入点时插入/替换/删除列表索引/值- 样式变得更有效.如果总插入大小会导致我的向量无论如何都需要调整大小,那么我们就这样做了.

鉴于我的向量比列表的总长度大得多,是否有一种算法可以有效地将列表合并到向量中?

到目前为止,这就是我所拥有的:

  • 传递给每个列表ier3表示条目的净删除(左移),净替换(没有移动,因此便宜)或条目的净插入(右移).那里可能还有一些元素的重新安排,但昂贵的部分是净删除和净插入.

  • 要弄清楚有效地进行网络插入或净删除的算法并不难.

  • 当两者中的任何一个发生时,它会更难.

我唯一能想到的就是两次通过:

  1. 删除/替换
  2. 插入/替换 …

c++ algorithm vector sparse-matrix

10
推荐指数
1
解决办法
482
查看次数

你如何使用Ruby on Rails进行科学研究(如果适用)?

我们从事系统生物学研究.我们更喜欢使用现有的数据集,因为收集新的生物数据是昂贵的.因此,我们编写的许多脚本只不过是将一个数据集转换为另一个数据集.

最终,我们将结果放在网上 - 越来越多的期刊需要这样的东西.

因此,对我来说,尝试将Rails用于我的项目并不是一个很大的飞跃.我可以设置简单的可重复实验,逐步通过数据库表(例如使用rake)转换数据,并使用像flotomatic和gnuplot 这样的宝石显示结果.如果我需要的东西很快跑,我甚至可以用C编写自定义的宝石++使用水稻,或者使用并行八哥workling.

最后,我开始怀疑是否有其他人正在使用Rails进行生物信息学或科学研究.

我想,"如果我是一个科学研究Rails宝石,我该怎么办?"

这样的宝石有什么额外的功能?也许迁移适应了一个可以管理的管道?也许更高级的图形功能?内置后台工作?

ruby-on-rails bioinformatics

9
推荐指数
1
解决办法
1552
查看次数

Ruby:有类似于Enumerable#drop的东西会返回一个枚举器而不是一个数组吗?

我有一些大的固定宽度文件,我需要删除标题行.

跟踪迭代器似乎不是很惯用.

# This is what I do now.
File.open(filename).each_line.with_index do |line, idx|
  if idx > 0
     ...
  end
end

# This is what I want to do but I don't need drop(1) to slurp
# the file into an array.
File.open(filename).drop(1).each_line do { |line| ... }
Run Code Online (Sandbox Code Playgroud)

这个Ruby的成语是什么?

ruby enumerable

8
推荐指数
2
解决办法
4784
查看次数

按降序对可枚举进行排序

Enumerable按降序排序的最佳方法是什么?

我一直在做@array.sort.reverse@array.sort_by{|song| song.title }.reverse

我想我可以做类似的事情@array.sort{|a, b| b.title <=> a.title},但我发现这很难阅读和冗长.

ruby enumerable

7
推荐指数
1
解决办法
5161
查看次数