LINUX.ORG.RU

Ruby, any?, match

 


0

2
if _list.any?{ |rexp| _var.match(rexp) } then

Как получить под if'ом элемент из _list, который совпал?

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

Ответ на: комментарий от arturpub

Два раза полный рэгэксповый поиск гонять это маразм, ведь нужная инфа как бы уже доступна и вычислена один раз. Но не понимаю, как её вытащить.

yu-boot ★★★★★
() автор топика
Ответ на: комментарий от yu-boot

Я в рубях не силен, там что-то вроде этого нельзя сделать?

if (my $re = _list.find{ |re| _var.match(re) }) {
    # whatever
}
Ну или вынеси условие из if'а, по-тупому.

arturpub ★★
()

По идее должен быть метод достающий первый совпавший элемент, юзай его вместо any. На C# будет примерно так:

class Program
{
    static void Main(string[] args)
    {
        var list = new[] {"1", "2", "3"};
        string x;
        if ((x = list.FirstOrDefault(y => y == "1")) != null)
        {
            // do something
        }
    }
}

encyrtid ★★★★★
()
Ответ на: комментарий от encyrtid

Видимо как-то так:

x = _list.find{ |rexp| _var.match(rexp) }
if x != nil then ...

encyrtid ★★★★★
()

Как получить под if'ом элемент из _list, который совпал?

man $~

kelyar ★★★★★
()

Выкрутился проще - ведь _var под if всегда будет правильный, иначе в if не попадёшь :)

yu-boot ★★★★★
() автор топика
Ответ на: комментарий от yu-boot

ok, значит я неправильно понял, что было нужно :)

kelyar ★★★★★
()

Тебе нужен find, он же detect.

S-Mage ★★
()
Ответ на: комментарий от arturpub

Ффффак, я искал в Array и Regexp :) Пригодится ,спасибо.

yu-boot ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.