map(x, y)
будет сродни этому C# код:
y.Select(item => x(item))
так это: map(str, [eventCodes] + data)
будет сродни этому:
([eventCodes] + data).Select(item => str(item))`
^-----------------^ ^-^
Выделенная часть s еще недействителен код C#. Что такое str
, ну, наверное, мы можем заменить это ToString
:
([eventCodes] + data).Select(item => item.ToString())`
^-----------------^
[eventCodes] + data
присоединяет список, содержащий одну строку eventCodes
с набором строк в data
, так что мы имеем это:
new[] { eventCodes }.Concat(data).Select(item => item.ToString())
Перемещение из один шаг, это:
`\x01`.join(...)
в C#:
string.Join("\x01", ...)
так, то мы получим следующее:
string.Join("\x01", new[] { eventCodes }.Concat(data)
.Select(item => item.ToString()))
Окончательный метод:
public void sendData(string eventCodes, IEnumerable<string> data = null)
{
if (data != null)
push(string.Join("\x01", new[] { eventCodes }
.Concat(data.Select(item => item.ToString()))) + "\x00");
else
push(eventCodes + "\x00");
}
Лично я хотел бы изменить код следующим образом:
public void sendData(string eventCodes, IEnumerable<string> data = null)
{
string element;
if (data != null)
element = string.Join("\x01", new[] { eventCodes }
.Concat(data.Select(item => item.ToString())))
else
element = eventCodes;
push(element + "\x00");
}
'карты (FUNC, iterable) 'аналогичен C# 'iterable.Select (func)'. В python '[array] + [array] == [array, array]', который является просто конкатенацией списка. – Phoshi
@Phoshi: используя слово 'array' для представления элемента в массиве, есть пустая строка – Eric
@ Эрик: Правильно, я думаю, что я изменил направление с примером на полпути. Eugh. '[a] + [b] == [a, b]' намного лучше. – Phoshi