Получить лямбда-вход в c# - PullRequest
0 голосов
/ 23 марта 2020

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

это мой код:

public static Func<float[], bool[]> CategoricalMap(Func<float, bool> mapper)
    {
        Func<float[], bool[]> fun = x => new bool[] { true };
        return fun;
    }

    public static void Main()
    {
        Func<float, bool> success = x => x == 5.5f;
        var result = CategoricalMap(success)(new float[] { 4f, 5.5f, 3.5f, -5.5f, 10.2f });
        Console.ReadKey();
    }

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

mapper(float);

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

Редактировать 1

Я думаю, я должен прояснить ситуацию. Несколько недель go попросил кого-нибудь дать мне лямбда-вызовы, к сожалению, у меня нет возможности связаться с ним , (довольно глупо с моей стороны) вот что он дал мне:

Создать лямбда-успех, который возвращает true, если заданное значение выше или равно 5.5f

Создайте следующую функцию: Категориальная карта Создает a mapper function Input: mapper функция типа Func<float, bool> Output: функция типа Func<float[], bool[]>, которая принимает массив логических значений и применяет функцию mapper к каждому из элементов и сохраняет результаты в целом числе. массив

1 Ответ

1 голос
/ 23 марта 2020
Func<float[], bool[]> fun = x => new bool[] { true };

Там x является вашим аргументом и имеет тип float[]. На самом деле это массив, который вы можете перебирать:

Func<float[], bool[]> fun = x => { 
   var result = new bool[x.Length];
   for(int i = 0; i < x.Length; ++i) {
      result[i] = mapper(x[i]);
   } 
   return result;
};

Теперь вы можете использовать его как

public static Func<float[], bool[]> CategoricalMap(Func<float, bool> mapper)
{
   Func<float[], bool[]> fun = x => { 
      var result = new bool[x.Length];
      for(int i = 0; i < x.Length; ++i) {
         result[i] = mapper(x[i]);
      }
      return result;
   };
   return fun;
}

public static void Main()
{
    Func<float, bool> success = x => x == 5.5f;
    var result = CategoricalMap(success)(new float[] { 4f, 5.5f, 3.5f, -5.5f, 10.2f });
    Console.ReadKey();
}

Но не делайте этого. Такой подход ужасен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...