红宝石的范围非常酷.我最终得到这样的数组:
geneRanges = [(234..25), (500..510), (1640..1653)]
Run Code Online (Sandbox Code Playgroud)
然后必须删除它们的一部分.为此我:
genePositions = geneRanges.collect {|range| range.entries }.flatten
=> [500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653]
Run Code Online (Sandbox Code Playgroud)
它们被操纵,因此一些数字被排除在外,其他数字可能被添加.我最终可能会这样:
[505, 506, 507, 600, 601, 602, 603, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654]
Run Code Online (Sandbox Code Playgroud)
如何将其转换回紧凑的范围数组?似乎反函数应该存在?我希望它能返回这样的东西:
[(505..507), (600..603), (1643..1654)]
Run Code Online (Sandbox Code Playgroud)
谢谢!
>> current_user.first_visit
=> 0
>> if current_user.first_visit
>> puts "test"
>> end
test
=> nil
Run Code Online (Sandbox Code Playgroud)
为什么打印测试?
我有一个类似于以下的功能:
def check
return 2 == 2 || 3 != 2 || 4 != 5
end
Run Code Online (Sandbox Code Playgroud)
我的问题是,Ruby会执行所有比较,即使第一个是真的,因此函数返回true.我的检查要密集得多,所以我想知道我是否应该以不同的方式解决这个问题,以避免每次都进行所有检查.
irb(main):004:0> 2 == 2 || 3 != 2 || 4 != 5
=> true
Run Code Online (Sandbox Code Playgroud)
谢谢.
我是Ruby的新手,我正在研究一些katas,我坚持这个愚蠢的问题.我需要将1个文件的内容复制到1行代码中的新文件中
第一次尝试:
File.open(out, 'w').write(File.open(in).read)
Run Code Online (Sandbox Code Playgroud)
很好,但是我需要关闭文件:
File.open(out, 'w') { |outf| outf.write(File.open(in).read) }
Run Code Online (Sandbox Code Playgroud)
然后关闭阅读:
File.open(out, 'w') { |outf| File.open(in) { |inf| outf.write(outf.read)) } }
Run Code Online (Sandbox Code Playgroud)
这是我想出来的,但它看起来不像我的一行代码:(
想法?
问候,
我想明白之间的差别*(1..9),并[*1..9]
如果我将它们分配给变量,它们的工作方式相同
splat1 = *(1..9) # splat1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
splat2 = [*1..9] # splat2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)
但是,事情变得奇怪,当我尝试使用*(1..9)和[*1..9]直接.
*(1..9).map{|a| a.to_s} # syntax error, unexpected '\n', expecting tCOLON2 or '[' or '.'
[*1..9].map{|a| a.to_s} # ["1", "2", "3"...]
Run Code Online (Sandbox Code Playgroud)
我猜测问题的一部分是运营商的预测?但我不确定发生了什么.为什么我无法使用*(1..9)我可以使用的相同功能[*1..9]?
我正在努力编写一个干净的方法,当传递一个字符串数组时,x返回一个总共x的数组元素的随机列表,例如.
def getrandomarrayelements(thearray, howmany)
return [something]
end
Run Code Online (Sandbox Code Playgroud)
是的,我应该提交我现有的代码,虽然工作效果不好,但它有8行长,我觉得可以在一个代码中完成?!
在"The Well Grounded Rubyist"(摘录)一书中,David Black谈到了"Class/Object Chicken-and-Egg Paradox".我很难理解整个概念.
有人可以用更好/更容易/类比/其他术语来解释它吗?
引用(强调我的):
这个类
Class本身就是一个例子; 也就是说,它是一个Class对象.而且还有更多.还记得上课Object吗?嗯,Object是一个类...但类是对象.所以,Object是一个对象.而且Class是一堂课.并且Object是一个类,并且Class是一个对象.哪个先来?
Class除非该类Object已存在,否则如何创建该类?但是,如果有一个类可以有实例,那么怎么会有一个类Object(或任何其他类)Class呢?处理这个悖论的最好方法,至少就目前来说,是忽略它.为了让类和对象系统运行起来,Ruby必须做一些鸡蛋或鸡蛋的东西 - 然后,循环和悖论并不重要.在编程过程中,您只需要知道类是对象,被调用类的实例
Class.(如果你想简要地知道它是如何工作的,就像这样:每个对象都有一个内部记录,它是一个实例的类,并且对象内部的记录
Class指向它Class.)
我正在上一堂在线课程,通常有一个非常简单的单行解决方案.一个问题表明,给定以下数组:
["emperor", "joshua", "abraham", "norton"]
Run Code Online (Sandbox Code Playgroud)
我必须使用#inject一个字符串,所有名称都用一个字符串连接在一起,每个名称的初始上限,如下所示:
"Emperor Joshua Abraham Norton"
Run Code Online (Sandbox Code Playgroud)
虽然这很容易用#map和完成#join,但这个特殊的练习只需要使用#inject.我提出了这样的事情:
["emperor", "joshua", "abraham", "norton"].inject("") do |memo, word|
memo << word.capitalize << " "
end
Run Code Online (Sandbox Code Playgroud)
这会给我:
"Emperor Joshua Abraham Norton "
Run Code Online (Sandbox Code Playgroud)
其中字符串末尾的空格不作为正确的解决方案传递.
#inject,传递一个空字符串?<<组合字符串?我在这里使用解决方案来更改git diff输出中的选项卡大小.这很好用git diff.
我在.gitconfig中有这些设置:
[core]
whitespace = tabsize=4,indent-with-non-tab
pager = less -FSRX -x4
Run Code Online (Sandbox Code Playgroud)
但这些设置似乎并没有影响git add -p.如何在git add -p命令中为帅哥设置标签大小?
根据rails文档
http://guides.rubyonrails.org/migrations.html
2.3支持的类型修饰符表示应该可以修改字段以允许或禁止列中的NULL,并且可以在终端上执行此操作
这就是我想要在迁移文件中出现的内容
class CreateTestModels < ActiveRecord::Migration
def change
create_table :test_models do |t|
t.string:non_nullable, :null => false
t.timestamps
end
end
end
Run Code Online (Sandbox Code Playgroud)
在终端上,我试过了
rails generate model TestModel non_nullable:string{null}
rails generate model TestModel 'non_nullable:string{null: false}'
Run Code Online (Sandbox Code Playgroud)
我想不出任何其他表达方式
注意:我已经知道您可以进入迁移文件并手动添加它.那不是我想要的.