草庐IT

ruby - 选择性 Ruby 数组切片

我一直在慢慢学习Ruby(在这一点上,这可能是我投入大量时间实际学习的第一门语言)所以这对你们中的许多人来说可能是一个非常简单的问题。我的学习玩具项目基本上是一个roguelike。目前,我有一个Map类,其中包含一个Tile对象数组,当然代表整个map中的每个图block。我正在尝试创建一个返回较小数组的方法(最有可能的例子是显示map的当前可视区域)。我的问题归结为这个。由于包含所有这些图block的数组是一维的,我似乎想不出一种干净的方法来根据该方法用来确定返回内容的两个x,y坐标来切出该数组的各个部分。换句话说,如果没有一些看起来相当丑陋的代码,我似乎无法找到一种在两个坐标对之

ruby - ruby 中的重叠切片

这个问题在这里已经有了答案:Rubyarrayaccess2consecutive(chained)elementsatatime(4个答案)关闭3年前。鉴于我有数组[1,2,3,4,5,6,7,8,9,10]获取2个元素的最短方法是什么一段时间,同时确保每个切片之间有重叠。例如:预期结果[1,2][2,3][3,4][4,5][5,6][6,7][7,8][8,9][9,10][10,nil]

ruby - 元素到达时切片数组

假设我有一个这样的数组:['x','cat','dog','x','dolphin','cougar','whale']我不知道数组的长度或何时会出现“x”。当我到达'x'时,我想将以下元素插入一个新数组,直到到达下一个includes?('x')的元素。期望的输出是:[['猫'、'狗']['海豚'、'美洲狮'、'鲸鱼']]我怎样才能做到这一点? 最佳答案 Enumerable#slice_before使这变得简单:a=['x','cat','dog','x','dolphin','cougar','whale']a.slice_b

ruby-on-rails - 为什么这个数组切片返回一个空数组而不是 nil?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:ArrayslicinginRuby:lookingforexplanationforillogicalbehaviour(takenfromRubykoans.com)我一直在研究ruby​​中的数组切片,但我不明白下面的最后两个结果:a=[1,2,3]a[2,1]#outputis[3]a[3,1]#outputis[]...why??a[4,1]#outputisnil...accordingtothedocsthismakessense为什么a[3,1]是一个空数组而a[4,1]是nil?如果有的话,

ruby - 在 Ruby 中将不连续的数据切片为连续的部分

我有这个不连续的数组:a=[1,2,3,7,8,10,11,12]我需要它是一个连续数组的数组:[[1,2,3],[7,8],[10,11,12]]我正在遍历原始值,将每个值与最后一个值进行比较以构建新数组:parts=[]last=nila.eachdo|n|parts.push[]iflast.nil?||last+1!=nparts.last.pushnlast=nend感觉很脏,不像Ruby。我很想找到一个干净、优雅的解决方案。 最佳答案 ([a[0]]+a).each_cons(2).slice_before{|k,l|k

ruby - 在字符串上使用 Ruby,如何使用 RegEx 在字符串的两个部分之间进行切片?

我只想将字符串中两个特定点之间的文本保存到一个变量中。文本看起来像这样:..."content"=>"ThetextIwanttosavetoavariable"}]...我想我必须使用扫描或切片,但不确定如何在不获取文本前后的RegEx标识符的情况下仅提取文本。我试过了,但没用:var=mystring.slice(/\"content\"\=\>\".\"/) 最佳答案 这应该可以完成工作var=mystring[/"content"=>"(.*)"/,1]注意:.slice别名[]您转义的字符都不是您使用的特殊正则表达式字符您

ruby - 如何在 Ruby 中有效地切片二进制数据?

在查看SO帖子后Ruby:Splitbinarydata,我使用了以下有效的代码。z='A'*1_000_000z.bytes.each_slice(STREAMING_CHUNK_SIZE).eachdo|chunk|c=chunk.pack('C*')end但是,它很慢:Benchmark.realtimedo...=>0.0983949700021185切片和打包1MB文件需要98毫秒。这非常慢。用例:服务器从外部API接收二进制数据,并使用socket.writechunk.pack('C*')对其进行流式处理。数据预计在50KB到5MB之间,平均500KB。那么,如何在Rub

ruby - 在 Ruby 中如何根据特定字符对字符串进行切片或拆分?

如果我有一个如下所示的字符串,我将如何在每第3个字符或任何其他指定字符处拆分它?b="123456789"结果是这样的:b=["123","456","789"]我试过使用这些方法:b.split("").each_slice(3).to_a但它的结果是:[["1","2","3"],["4","5","6"],["7","8","9"]]感谢您的帮助! 最佳答案 我会使用:b="123456789"b.scan(/.{3}/)#=>["123","456","789"]如果OP的样本长度不同,或者它有一个嵌入的“\n”,一个简单的

ruby - 如何快速对大型数据文件进行切片和切 block ?

我想以相当快速和高效的方式对大型数据文件进行切片和切block,直到一个演出。如果我使用类似UNIX的“CUT”之类的东西,它会非常快,即使在CYGWIN环境中也是如此。我曾尝试开发各种Ruby脚本并对其进行基准测试以处理这些文件,但结果总是很糟糕。你会在Ruby中做些什么来让它不那么慢? 最佳答案 这个问题让我想起了TimBray的WideFinderproject.他使用Ruby读取Apache日志文件并找出哪些文章被获取最多的最快方法是使用以下脚本:counts={}counts.default=0ARGF.each_line

Ruby:范围是空的,但用它切片会产生元素

我正在学习Ruby,并且刚刚接触了一些关于数组和范围的知识。我遇到了一些关于slice的事情,虽然乍一看很有意义,但当我更深入地研究它时,我有点困惑。IRB说(2..-1).to_a是一个空数组,意味着范围内没有值,对吗?但是如果我在[:a,:b,:c,:d,:e][2..-1]中使用相同的范围,我会返回[:c,:d,:e]而不是空数组。现在,我知道-1代表数组的最后一个元素,所以选择的内容是有意义的。但是,如果范围本身是空的,它如何选择任何内容? 最佳答案 这是一个有趣的问题。答案是,在对数组进行切片时,检查的不是范围内的各个元素