рубин at_exit статус выхода

Я просто подумал, что добавлю свои два бита, потому что другие решения по этому вопросу не попадают в классификацию кода для повторного использования и не удобны.

Следующий блок кода расширяет объект string, так что он доступен как естественный метод при работе со строками.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
using System.Collections.ObjectModel;

namespace System
{
    public static class StringExtensions
    {
        public static string[] Split(this string s, string delimiter, StringSplitOptions options = StringSplitOptions.None)
        {
            return s.Split(new string[] { delimiter }, options);
        }
    }
}

Теперь вы можете использовать функцию .Split() из любой строки следующим образом:

string[] result;

// Pass a string, and the delimiter
result = string.Split("My simple string", " ");

// Split an existing string by delimiter only
string foo = "my - string - i - want - split";
result = foo.Split("-");

// You can even pass the split options parameter. When omitted it is
// set to StringSplitOptions.None
result = foo.Split("-", StringSplitOptions.RemoveEmptyEntries);

Чтобы разделить символ новой строки, просто передайте "\n" или "\r\n" в качестве параметра разделителя. .

Комментарий: Было бы неплохо, если бы Microsoft реализовала эту перегрузку.

12
задан tig 17 July 2009 в 15:38
поделиться

2 ответа

с использованием идеи от tadman

at_exit do
  if $!.nil? || $!.is_a?(SystemExit) && $!.success?
    print 'success'
  else
    code = $!.is_a?(SystemExit) ? $!.status : 1
    print "failure with code #{code}"
  end
end
15
ответ дан 2 December 2019 в 04:43
поделиться

Хотя документация по этому вопросу очень тонкая, $! устанавливается как последнее возникшее исключение, а после вызова exit () это исключение SystemExit. Сложив эти два вместе, вы получите следующее:

at_exit do
  if ($!.success?)
    print 'Success'
  else
    print 'Failure'
  end
end
17
ответ дан 2 December 2019 в 04:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: