foreach (… in…) или .ForEach (); вот в чем вопрос [дубликат]

Как упоминал @admaoldak, сначала нормализуйте градусы:

a1_norm = a1 % 360
a2_norm = a2 % 360
b1_norm = b1 % 360
b2_norm = b2 % 360

Теперь, чтобы проверить, находится ли b1 внутри (a1, a2),

def intersect(b, as, ae
    Intersect = False
    If as > ae:
        if b >= as or b <= ae:
            return True
    Else:
        if b>=as and b<=ae:
            return True
    return False

Окончательный ответ:

intersect(b1_norm,a1_norm,a2_norm)||intersect(b2_norm,a1_norm,a2_norm)||
intersect(a1_norm,b1_norm,b2_norm)||intersect(a2_norm,b1_norm,b2_norm)
13
задан Community 23 May 2017 в 12:03
поделиться

6 ответов

foreach (string propertyToMask in propertiesToMask)
{
    foreach (XElement element in xDoc.Descendants(propertyToMask))
    {
        element.SetValue(new string('_', element.Value.Length));
    }
}

Потому что интервал упрощает сканирование. Второй очень загроможден, и мне нужно его прочитать.

14
ответ дан 1 December 2019 в 19:14
поделиться

Эрик Липперт написал хорошую запись об этом в своем блоге . Подводя итог, можно сказать, что сама задача, выполняемая ForEach , заключается в создании побочных эффектов, которые могут быть нежелательными для функционального стиля программирования на C #.

14
ответ дан 1 December 2019 в 19:14
поделиться

Традиционный способ имеет большое преимущество в том, что его легко отлаживать. Но я лично предпочел бы подход ForEach () в этом случае. То обстоятельство, что трудно отлаживать код, написанный свободно, на мой взгляд, является недостатком доступных инструментов, а не стиля кодирования. По моему личному опыту, количество ошибок в таких методах очень низкое, поэтому это не большая проблема.

Я бы написал несколько методов расширения, дающих следующий код.

propertiesToMask
   .SelectMany(property => document.Descendants(property))
   .ForEach(element => element.MaskValue());
4
ответ дан 1 December 2019 в 19:14
поделиться
foreach (string propertyToMask in propertiesToMask)
{
    foreach (XElement element in xDoc.Descendants(propertyToMask))
    {
        element.SetValue(new string('_', element.Value.Length));
    }
}

Поскольку интервал очень прост в сканировании. Второе далеко от загромождения, и я должен прочитать его.

-121--1886438-

Нет... imaplib - это довольно хорошая библиотека, она настолько невразумительна.

Вы можете проверить, что t = = 'OK' , но данные [0] [1] работают так, как ожидалось, столько, сколько я использовал.

Вот быстрый пример, который я использую, чтобы извлечь подписанные сертификаты, которые я получил по электронной почте, не защищенные от бомб, но удовлетворяющие моим целям:

import getpass, os, imaplib, email
from OpenSSL.crypto import load_certificate, FILETYPE_PEM

def getMsgs(servername="myimapserverfqdn"):
  usernm = getpass.getuser()
  passwd = getpass.getpass()
  subject = 'Your SSL Certificate'
  conn = imaplib.IMAP4_SSL(servername)
  conn.login(usernm,passwd)
  conn.select('Inbox')
  typ, data = conn.search(None,'(UNSEEN SUBJECT "%s")' % subject)
  for num in data[0].split():
    typ, data = conn.fetch(num,'(RFC822)')
    msg = email.message_from_string(data[0][1])
    typ, data = conn.store(num,'-FLAGS','\\Seen')
    yield msg

def getAttachment(msg,check):
  for part in msg.walk():
    if part.get_content_type() == 'application/octet-stream':
      if check(part.get_filename()):
        return part.get_payload(decode=1)

if __name__ == '__main__':
  for msg in getMsgs():
    payload = getAttachment(msg,lambda x: x.endswith('.pem'))
    if not payload:
      continue
    try:
      cert = load_certificate(FILETYPE_PEM,payload)
    except:
      cert = None
    if cert:
      cn = cert.get_subject().commonName
      filename = "%s.pem" % cn
      if not os.path.exists(filename):
        open(filename,'w').write(payload)
        print "Writing to %s" % filename
      else:
        print "%s already exists" % filename
-121--1658024-

Я настоятельно предпочитаю первый, по трем причинам.

Во-первых, это более эффективно (во-вторых, у вас есть дополнительные вызовы ToList ()).

Во-вторых, он более читаемый, на мой взгляд.

Наконец, я рекомендую прочитать запись в блоге Эрика Липперта на эту тему. Есть философские причины избегать List < T > .ForEver , так как вся цель состоит в том, чтобы вызвать побочные эффекты, даже если он имеет функциональный стиль.

4
ответ дан 1 December 2019 в 19:14
поделиться

Начиная с основ...

Мне нравится затмение, но мне очень понравилось работать с IDEA IntelliJ

-121--1663360-

Если это так, то потребуется поместить драгоценный камень в глобальное пространство имен требуется в верхней части файла?

Да. request не имеет области действия, тогда как load - нет.

-121--2217656-

Первый может быть изменен во время работы отладчика, и Visual Studio позволяет продолжить отладку. После изменения варианта .ForEvery необходимо перезапустить сеанс отладки и выполнить перекомпиляцию, поскольку он содержит лямбда-выражение (VS 2008)

1
ответ дан 1 December 2019 в 19:14
поделиться

Прочитайте этот пост на сайте Kinn StackExchange , где объясняется, почему они используют стабильный и девелоперский. Также предлагаются другие способы структурирования репозиториев.

Мы сохраняем стабильное хранилище данных. Новые функции переходят в девел и в конечном итоге получить слияние вперед стабильный, в то время как исправления ошибок переходят в стабильный и снова объединиться в Девел.

-121--4998194-

Попробуйте. Работает как очарование для меня (на устройствах iPhone). Я использовал этот код для экрана входа один раз. Я настроил табличное представление на два раздела. Вы, конечно, можете избавиться от условий раздела.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:kCellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
                                   reuseIdentifier:kCellIdentifier] autorelease];
    cell.accessoryType = UITableViewCellAccessoryNone;

    if ([indexPath section] == 0) {
        UITextField *playerTextField = [[UITextField alloc] initWithFrame:CGRectMake(110, 10, 185, 30)];
        playerTextField.adjustsFontSizeToFitWidth = YES;
        playerTextField.textColor = [UIColor blackColor];
        if ([indexPath row] == 0) {
            playerTextField.placeholder = @"example@gmail.com";
            playerTextField.keyboardType = UIKeyboardTypeEmailAddress;
            playerTextField.returnKeyType = UIReturnKeyNext;
        }
        else {
            playerTextField.placeholder = @"Required";
            playerTextField.keyboardType = UIKeyboardTypeDefault;
            playerTextField.returnKeyType = UIReturnKeyDone;
            playerTextField.secureTextEntry = YES;
        }       
        playerTextField.backgroundColor = [UIColor whiteColor];
        playerTextField.autocorrectionType = UITextAutocorrectionTypeNo; // no auto correction support
        playerTextField.autocapitalizationType = UITextAutocapitalizationTypeNone; // no auto capitalization support
        playerTextField.textAlignment = UITextAlignmentLeft;
        playerTextField.tag = 0;
        //playerTextField.delegate = self;

        playerTextField.clearButtonMode = UITextFieldViewModeNever; // no clear 'x' button to the right
        [playerTextField setEnabled: YES];

        [cell.contentView addSubview:playerTextField];

        [playerTextField release];
    }
}
if ([indexPath section] == 0) { // Email & Password Section
    if ([indexPath row] == 0) { // Email
        cell.textLabel.text = @"Email";
    }
    else {
        cell.textLabel.text = @"Password";
    }
}
else { // Login button section
    cell.textLabel.text = @"Log in";
}
return cell;    
}

Результат выглядит следующим образом:

login form

-121--638275-

Вот действительно субъективный ответ:

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

Для меня второй набор кода легче читается и выглядит гораздо менее скомканным. Как уже упоминали другие, ToList () довольно прискорбен, но он все еще выглядит лучше для меня.

Мне нравится решение Даниэля Брюкнера еще лучше. Это выглядит лучше, чем любое из других предложенных решений.

0
ответ дан 1 December 2019 в 19:14
поделиться
Другие вопросы по тегам:

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