Кортежные литералы в объявлениях интерфейса

Как было сказано в комментарии выше, есть способ передать несколько аргументов. Возможно, есть более элегантный способ, но он работает.

  • Если вы уверены, что всегда все необходимые ключи, вы можете использовать это:
jq --arg key1 $k1 --arg key2 $k2 --arg key3 $k3 --arg key4 $k4 '.[$key1] | .[$key2] | .[$key3] | .[$key4] '

  • Если ключ не всегда используется, вы можете сделать это следующим образом:
jq --arg key $k ' if key != "" then .[$key] else . end'

  • Если клавиша иногда ссылается на массив:
jq --arg key $k ' if type == "array" then .[$key |tonumber] else .[$key] end'

, конечно, вы можете их комбинировать!

0
задан Uwe Keim 15 January 2019 в 18:46
поделиться

1 ответ

Ваш синтаксис для именованных кортежей в качестве типа возврата метода неверен:

public interface IFoo {
    (T1 result1, T2 result2) Bar();
}

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

// Method return syntax. Type & Name
public (bool success, T payload) TryGetPayload<T>() { }

// Literal assignment syntax. Name & Value
var result = (success: true, payload: t);
0
ответ дан Neil 15 January 2019 в 18:46
поделиться
Другие вопросы по тегам:

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