我首先查找find
,因为尽可能多的API与Ruby相同但找不到find
。所以我认为下一个最好的是select
+ first
(我的数组非常小,所以这样会好的。)
查看Crystal API select!
获取一个块,就像在Ruby中一样。看来select!
会改变接收数组,没有select
(我至少可以看到它!)。
这是我的代码:
segment = text.split(' ').select! { |segment| segment.include?("rm_") }.first
错误是:
segment = text.split(' ').select! { |segment| segment.include?("rm_") }.first
^~~~~~~
答案 0 :(得分:5)
Enumerable#find
和Enumerable#select
都存在并记录在Enumerable上。
因此,如下所示,您可以从Ruby中了解它:
segment = text.split(' ').find &.includes?("rm_")
您还可以使用正则表达式来保留中间数组:
segment = text[/rm_[^ ]+/]
如果您在示例代码中将include?
替换为includes?
,它实际上也可以。